Maison > développement back-end > C++ > le corps du texte

Pourquoi est-ce que j'obtiens des erreurs « Symboles non définis » et « Typeinfo » en C et comment puis-je les corriger ?

Patricia Arquette
Libérer: 2024-10-30 03:51:03
original
169 Les gens l'ont consulté

Why Do I Get

Résolution des erreurs « Symboles non définis » et « Typeinfo » en C

Rencontre d'erreurs telles que « Symboles non définis » et « Typeinfo » lors de la compilation peut être déroutant. Cet article vise à faire la lumière sur ces erreurs et à apporter une solution.

Comprendre Vtables et Typeinfo

  • Vtable (table de méthodes virtuelle) : Une structure de données contenant des pointeurs vers les méthodes virtuelles d'une classe. Il permet des appels polymorphes à des méthodes virtuelles, où une classe dérivée peut remplacer les méthodes de sa classe de base.
  • Typeinfo : Informations sur le type de classe, telles que son nom et ses méthodes. Ces informations sont utilisées pour l'identification de type dynamique et l'accès aux informations de type d'exécution.

Analyse des erreurs

Le message d'erreur donné indique que les symboles de la table virtuelle de la classe Obstacle et typeinfo sont manquants. Cela peut être dû à plusieurs raisons :

  1. Méthodes virtuelles pures manquantes : Une classe de base abstraite nécessite que toutes ses méthodes virtuelles soient déclarées comme « virtuelles pures », c'est-à-dire en utilisant = 0 à la fin de leur déclaration. Si une méthode virtuelle pure n'est pas remplacée par une classe dérivée, cela indique une implémentation manquante.
  2. Méthodes non virtuelles non définies : Si une classe de base abstraite contient des fonctions virtuelles non pures, le compilateur suppose qu'ils sont implémentés quelque part. S'ils ne sont pas implémentés, les structures internes nécessaires (vtable et typeinfo) manqueront.

Solution

Pour résoudre l'erreur, vous devez :

  1. Déclarer les méthodes virtuelles pures : Assurez-vous que les méthodes virtuelles de la classe Obstacle sont déclarées comme purement virtuelles.
  2. Implémentez des méthodes non virtuelles : Si la classe Obstacle contient des fonctions virtuelles non pures, assurez-vous qu'elles sont implémentées dans une classe dérivée.

Une fois ces conditions remplies, le compilateur pourra générer les structures vtable et typeinfo nécessaires. , et l'erreur de compilation devrait être résolue.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!