Heim > Backend-Entwicklung > C++ > Warum erzeugt mein C-Code Fehler „undefinierter Verweis auf Typeinfo'?

Warum erzeugt mein C-Code Fehler „undefinierter Verweis auf Typeinfo'?

DDD
Freigeben: 2024-12-04 12:34:10
Original
644 Leute haben es durchsucht

Why Does My C   Code Produce

Verstehen von „g undefinierter Referenz auf Typeinfo“-Fehlern

Wenn Sie auf „undefinierte Referenz auf Typeinfo“-Linkerfehler stoßen, ist es wichtig, sich damit zu befassen die zugrunde liegenden Gründe für diese Meldungen. Eine mögliche Ursache liegt darin, virtuelle Funktionen zu deklarieren, ohne ihre Definitionen anzugeben.

Virtuelle Funktionen ermöglichen Polymorphismus, sodass abgeleitete Klassen von ihren Basisklassen geerbte Methoden überschreiben und unterschiedliche Implementierungen bereitstellen können. Wenn jedoch eine virtuelle Funktion ohne Definition deklariert wird, zeigt der Compiler an, dass die Implementierung an anderer Stelle bereitgestellt wird. Dies bedeutet, dass der Linker während der Verknüpfungsphase versucht, die fehlende Definition zu finden und dabei auf andere Kompilierungseinheiten oder Bibliotheken verweist.

Um diesen Fehler zu beheben, muss die virtuelle Funktion von einer Definition begleitet werden. Dadurch wird die Funktionsdeklaration mit ihrer Implementierung verknüpft, wodurch verhindert wird, dass der Linker später versucht, die Referenz aufzulösen. Eine definierte virtuelle Funktion sieht wie folgt aus:

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

Im Gegensatz dazu sieht eine virtuelle Funktionsdeklaration ohne Definition wie folgt aus:

virtual void fn();
Nach dem Login kopieren

Diese Deklaration stellt die Definition nicht bereit, was zu „undefiniert“ führt Verweis auf den Fehler „typeinfo“.

Analog ist es vergleichbar mit der Deklaration einer externen Variablen ohne Definition it:

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

In diesem Fall gibt der Compiler an, dass die Ganzzahl „i“ an anderer Stelle deklariert ist und während der Verknüpfung aufgelöst werden muss. Andernfalls kann pi nicht auf seine Adresse verweisen.

Das obige ist der detaillierte Inhalt vonWarum erzeugt mein C-Code 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage