Maison >développement back-end >C++ >Pourquoi mon code C produit-il des erreurs « référence non définie à typeinfo » ?
Comprendre les erreurs « g référence non définie à typeinfo »
Lorsque vous rencontrez des erreurs de l'éditeur de liens « référence non définie à typeinfo», il est crucial de se plonger dans le raisons sous-jacentes à ces messages. Une cause potentielle réside dans la déclaration de fonctions virtuelles sans fournir leurs définitions.
Les fonctions virtuelles permettent le polymorphisme, permettant aux classes dérivées de remplacer et de fournir différentes implémentations pour les méthodes héritées de leurs classes de base. Cependant, lorsqu'une fonction virtuelle est déclarée sans définition, le compilateur indique que l'implémentation est fournie ailleurs. Cela signifie que l'éditeur de liens tentera de trouver la définition manquante lors de la phase de liaison, en faisant référence à d'autres unités de compilation ou bibliothèques.
Pour éliminer cette erreur, la fonction virtuelle doit être accompagnée d'une définition. Cela associe la déclaration de fonction à son implémentation, empêchant l'éditeur de liens de tenter de résoudre la référence ultérieurement. Une fonction virtuelle définie apparaît comme :
virtual void fn() { /* insert code here */ }
En revanche, une déclaration de fonction virtuelle sans définition ressemble à :
virtual void fn();
Cette déclaration ne parvient pas à fournir la définition, ce qui entraîne le message « non défini référence à l'erreur typeinfo".
De manière analogue, c'est comparable à déclarer une variable externe sans définir it :
extern int i; int *pi = &i;
Dans ce cas, le compilateur indique que l'entier 'i' est déclaré ailleurs et doit être résolu lors de la liaison. Sinon, pi ne peut pas faire référence à son adresse.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!