Je viens de rencontrer l'erreur suivante (et j'ai trouvé la solution en ligne, mais elle n'est pas présente dans Stack Overflow):
(.gnu.linkonce. [stuff]): référence non définie à [méthode] [fichier objet] :(. gnu.linkonce. [stuff]): référence non définie à `typeinfo for [classname] '
Pourquoi pourrait-on obtenir l'une de ces erreurs de l'éditeur de liens "référence non définie à typeinfo"?
(Points bonus si vous pouvez expliquer ce qui se passe dans les coulisses.)
virtual void abc() =0;
(si la version de base n'est jamais appelée)
abc()
comme ça, vous pouvez facilement oublier de redéfinir abc()
dans la classe dérivée et penser que tout va bien, car vous pourrez toujours appeler la fonction sans aucun problème. Une bonne pratique pour implémenter des fonctions virtuelles pures se trouve dans cet article , et cela consiste à faire en sorte que la fonction affiche "Fonction virtuelle pure appelée", puis plante le programme.
= 0;
.