bonjour, hé oui c'est encore moi !! ( je pose beaucoup de question mais j'apprend beaucoup grace à vous !!)
j'ai une classe abstraite (Animal, déclarée dans un Animal.h) avec trois méthodes virtuelles pures :
et le destructeur est bien virtuel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 virtual void trySeReproduire(Faune &)=0; virtual void tryManger(Faune &)=0; virtual void trySeDeplacer(Monde &)=0;
j'ai une classe Lapin (déclaration dans un Animal.h) qui hérite de celle ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part virtual ~Animal(){...}
j'ai implémenté ces méthodes dans Animal.cpp en incluant Animal.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class Lapin:public Animal{ ... //avec les même prototypes pour les méthodes virtuelles pures: void trySeReproduire(Faune &); void tryManger(Faune &); void trySeDeplacer(Monde &); ... };
et le compilateur me balance "undefined reference to 'vtable for Lapin'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void Lapin::trySeReproduire(Faune &f){ ... } // idem pour les deux autres
alors que les méthodes sont bien implémentées dans le .cpp
pour cerner le type d'erreur j'ai test dans Animal.h , dans la class Lapin :
tout en mettant celle implémentée dans Animal.cpp en commentaire , et la ça passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void trySeReproduire(Faune &){}
je comprend pas d'où vient cette erreur d'habitude c'est quand j'oublie d'implémenter une méthode virtuelle pure dans les classes héritières ou bien que j'oublie de mettre mon destrcuteur en virtuel dans la classe mère
Là pour le coup je vois pas d'ou vient l'erreur !
merci à vous une nouvelle fois !
Porco
Partager