Maison > développement back-end > C++ > Pourquoi g produit-il des erreurs « Référence non définie à typeinfo » ?

Pourquoi g produit-il des erreurs « Référence non définie à typeinfo » ?

Susan Sarandon
Libérer: 2024-12-03 06:18:10
original
330 Les gens l'ont consulté

Why Does g   Produce

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();
Copier après la connexion

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 */ }
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal