Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens des erreurs « Symboles non définis : \'vtable\' et \'typeinfo\'\ » dans mon programme C ?

Pourquoi est-ce que j'obtiens des erreurs « Symboles non définis : \'vtable\' et \'typeinfo\'\ » dans mon programme C ?

Linda Hamilton
Libérer: 2024-10-31 16:02:56
original
410 Les gens l'ont consulté

Why Am I Getting

Symboles non définis : "vtable" et "typeinfo"

Question :

Lors de la compilation un programme C, les erreurs suivantes se produisent :

Undefined symbols:
  "vtable for Obstacle"
  "typeinfo for Obstacle"
Copier après la connexion

Que signifient ces symboles et comment peuvent-ils être résolus ?

Réponse :

En C , une méthode virtuelle est une méthode déclarée dans une classe de base et remplacée dans les classes dérivées. Pour permettre la liaison dynamique à la méthode correcte au moment de l'exécution, le compilateur génère une table de méthodes virtuelles (vtable) et des informations de type (typeinfo) pour chaque classe contenant des méthodes virtuelles.

Les erreurs indiquent que le compilateur est incapable de recherchez la vtable et le typeinfo pour la classe Obstacle. Cela peut se produire si :

  • La classe Obstacle n'est pas correctement déclarée comme abstraite, ou
  • La classe Obstacle contient des méthodes virtuelles non pures qui ne sont pas implémentées dans une classe dérivée.

Pour résoudre ces erreurs, assurez-vous que toutes les méthodes virtuelles de la classe Obstacle sont déclarées comme virtuelles pures, en utilisant la syntaxe suivante :

<code class="cpp">virtual void Method() = 0;</code>
Copier après la connexion

Cela indique que la méthode doit être remplacée dans une classe dérivée et qu'elle ne peut pas avoir sa propre implémentation dans la classe de base.

Si la classe Obstacle contient des méthodes virtuelles non pures, assurez-vous qu'elles sont implémentées dans une classe dérivée. Sinon, le compilateur supposera qu'il a une implémentation quelque part et générera la vtable et le typeinfo dans un fichier objet qui ne contient pas l'implémentation réelle.

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