Maison > développement back-end > C++ > Pourquoi est-ce que je reçois une erreur « Référence non définie à Typeinfo » en C ?

Pourquoi est-ce que je reçois une erreur « Référence non définie à Typeinfo » en C ?

Linda Hamilton
Libérer: 2024-12-10 16:57:18
original
574 Les gens l'ont consulté

Why Am I Getting an

Référence non définie à Typeinfo : causes et résolution

La redoutable erreur « référence non définie à typeinfo » peut tourmenter les développeurs C, les laissant perplexes quant à ses origines. En arrière-plan, cette erreur survient lorsque l'éditeur de liens tombe sur une déclaration de fonction virtuelle sans sa définition correspondante.

Les fonctions virtuelles sont conçues pour être remplacées dans les classes dérivées, permettant un comportement polymorphe. Cependant, déclarer une fonction virtuelle sans sa définition implique que la définition est ailleurs. Cela oblige l'éditeur de liens à rechercher la définition manquante dans des unités de compilation ou des bibliothèques externes. Si l'éditeur de liens ne parvient pas à le localiser, l'erreur "référence non définie à typeinfo" apparaît.

Considérez cette déclaration :

virtual void fn();
Copier après la connexion

Cette déclaration informe le compilateur que fn() est une fonction virtuelle mais ne fournit pas sa mise en œuvre. L'éditeur de liens signalera cela comme un symbole non résolu lors de l'étape de liaison, ce qui entraînera l'erreur.

Pour rectifier cela, vous devez fournir une définition de la fonction virtuelle :

virtual void fn() { /* Implementation here */ }
Copier après la connexion

En joignant une définition à la déclaration, l'éditeur de liens n'a plus besoin de rechercher un symbole manquant.

Cette erreur est analogue au code suivant extrait :

extern int i;
int *pi = &i;
Copier après la connexion

Dans ce cas, i est déclaré comme une variable externe située dans une autre unité de compilation. Cela nécessite que l'éditeur de liens résolve la référence externe, mais s'il ne parvient pas à localiser i, il signalera une erreur de symbole non résolue.

En comprenant la cause fondamentale de l'erreur « référence non définie à typeinfo », les développeurs peuvent rapidement dépanner et résolvez le problème en fournissant des définitions appropriées pour les fonctions virtuelles ou en gérant les références de symboles externes de manière appropriée.

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