Heim > Backend-Entwicklung > C++ > Warum erhalte ich in C den Fehler „Undefinierter Verweis auf Typeinfo'?

Warum erhalte ich in C den Fehler „Undefinierter Verweis auf Typeinfo'?

Linda Hamilton
Freigeben: 2024-12-10 16:57:18
Original
575 Leute haben es durchsucht

Why Am I Getting an

Undefinierter Verweis auf Typeinfo: Ursachen und Lösung

Der gefürchtete Fehler „Undefinierter Verweis auf Typeinfo“ kann C-Entwickler plagen und ihnen Rätsel aufgeben seine Ursprünge. Hinter den Kulissen tritt dieser Fehler auf, wenn der Linker auf eine virtuelle Funktionsdeklaration ohne entsprechende Definition stößt.

Virtuelle Funktionen sind so konzipiert, dass sie in abgeleiteten Klassen überschrieben werden können, was polymorphes Verhalten ermöglicht. Die Deklaration einer virtuellen Funktion ohne ihre Definition impliziert jedoch, dass sich die Definition an einer anderen Stelle befindet. Dadurch wird der Linker gezwungen, externe Kompilierungseinheiten oder Bibliotheken nach der fehlenden Definition zu durchsuchen. Wenn der Linker es nicht findet, erscheint der Fehler „undefinierter Verweis auf Typeinfo“.

Beachten Sie diese Deklaration:

virtual void fn();
Nach dem Login kopieren

Diese Deklaration informiert den Compiler darüber, dass fn() eine virtuelle Funktion ist stellt jedoch nicht die Implementierung bereit. Der Linker markiert dies während der Verknüpfungsphase als ungelöstes Symbol, was zu dem Fehler führt.

Um dies zu beheben, müssen Sie eine Definition für die virtuelle Funktion bereitstellen:

virtual void fn() { /* Implementation here */ }
Nach dem Login kopieren

Durch Anhängen Wenn Sie der Deklaration eine Definition hinzufügen, muss der Linker nicht mehr nach einem fehlenden Symbol suchen.

Dieser Fehler ist analog zum folgenden Code Ausschnitt:

extern int i;
int *pi = &i;
Nach dem Login kopieren

In diesem Fall wird i als externe Variable deklariert, die sich in einer anderen Kompilierungseinheit befindet. Dies erfordert, dass der Linker die externe Referenz auflöst, aber wenn er i nicht finden kann, meldet er einen ungelösten Symbolfehler.

Wenn Entwickler die grundlegende Ursache des Fehlers „undefinierter Verweis auf Typeinfo“ verstehen, können sie den Fehler umgehend beheben und lösen Sie das Problem, indem Sie geeignete Definitionen für virtuelle Funktionen bereitstellen oder externe Symbolreferenzen entsprechend behandeln.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C den Fehler „Undefinierter Verweis auf Typeinfo'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage