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

Pourquoi mon code C produit-il des erreurs « référence non définie à typeinfo » ?

DDD
Libérer: 2024-12-04 12:34:10
original
681 Les gens l'ont consulté

Why Does My C   Code Produce

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

En revanche, une déclaration de fonction virtuelle sans définition ressemble à :

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

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

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal