Erreur incompréhensible
Voici une liste non-exhaustive d’erreurs dans le code qui peuvent provoquer des messages d’erreurs incompréhensibles.
Erreurs générales
- Oubli d’un
;à la fin de la déclaration d’une classe - Oubli du
#pragma onceau début d’un.hpp - Oubli du
MyClass::devant la définition d’une fonction dans le.cpp
Ce n’est pas la bonne fonction-membre qui est appelée dans un contexte d’héritage
- Oubli d’un
virtual - Typo dans le nom de la fonction membre dans la classe dérivée (majuscule qui devient une minuscule, etc)
- Changement d’un type; par exemple passage par référence dans la fonction-membre de la classe de base devient un passage par copie dans la fonction-membre de la classe dérivée
- Un
consten trop ou qui manque dans la déclaration de la fonction-membre de la classe fille indiquant que la fonction-membre ne modifie pas l’objet courant
Le compilateur refuse de construire un objet de type MyClass
- L’ajout d’un constructeur (quel qu’il soit) a pu empêcher au compilateur de générer le constructeur par défaut.
MyClassest devenu abstraite parce qu’une fonction virtuelle pure n’est pas ou plus implémentée (voir la section au dessus).MyClassn’est plus copiable parce qu’il contient desstd::unique_ptrou quelquechose qui contient unstd::unique_ptr.
Des choses étranges se produisent quand MaClass est détruite (ou à la toute fin du programme)
- Oubli de déclarer le destructeur
virtualpour une classe polymorphe.