Maison >développement back-end >C++ >Pourquoi g produit-il des erreurs « Référence non définie à typeinfo » ?
G : Comprendre les erreurs "Référence non définie à Typeinfo"
L'erreur "Référence non définie à typeinfo" est souvent rencontrée lors de la compilation de programmes C avec g. Cela signifie que l'éditeur de liens ne peut pas trouver les informations de type pour une classe particulière, ce qui peut avoir plusieurs causes.
Cause : Déclaration de fonctions virtuelles sans définitions
Une raison courante pour cette erreur déclare des fonctions virtuelles sans fournir leurs définitions dans la même unité de compilation. Lorsque vous déclarez une fonction virtuelle sans la définir, vous suggérez que sa définition existe ailleurs, soit dans des unités de compilation ultérieures, soit dans des bibliothèques externes.
Ainsi, lors de la phase de liaison, le compilateur recherche la définition de la fonction virtuelle dans d'autres fichiers objets ou bibliothèques. S'il ne parvient pas à localiser la définition, il génère l'erreur "référence non définie à typeinfo".
Exemple : Déclaration incorrecte
virtual void fn();
Cette déclaration informe le compilateur qu'un la fonction virtuelle nommée fn() existe, mais elle ne fournit pas d'implémentation concrète.
Exemple : Correct Définition
virtual void fn() { /* Implementation code here */ }
Lorsque vous fournissez une définition à la fonction virtuelle, l'éditeur de liens n'a plus besoin de la rechercher ailleurs, résolvant ainsi l'erreur.
Analogie : Externe Résolution des variables
Le comportement revient à déclarer une variable externe dans une unité de compilation et à tenter d'y accéder dans une autre unité sans fournir de réponse explicite. définition :
extern int i; int *pi = &i;
Ici, la variable i est déclarée en externe, indiquant que sa définition se trouve dans une autre unité de compilation. Si cette définition n'est pas disponible au moment de la liaison, le compilateur générera une erreur « référence non définie ».
Comprendre la cause première de cette erreur est crucial pour l'éviter et garantir une compilation réussie de votre code C.
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!