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 :
1 2 3
| virtual void trySeReproduire(Faune &)=0;
virtual void tryManger(Faune &)=0;
virtual void trySeDeplacer(Monde &)=0; |
et le destructeur est bien virtuel:
j'ai une classe Lapin (déclaration dans un Animal.h) qui hérite de celle ci:
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 &);
...
}; |
j'ai implémenté ces méthodes dans Animal.cpp en incluant Animal.h
1 2
| void Lapin::trySeReproduire(Faune &f){ ... }
// idem pour les deux autres |
et le compilateur me balance "undefined reference to 'vtable for Lapin'
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 :
void trySeReproduire(Faune &){}
tout en mettant celle implémentée dans Animal.cpp en commentaire , et la ça passe.
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