Ich bin gerade auf den folgenden Fehler gestoßen (und habe die Lösung online gefunden, aber sie ist im Stapelüberlauf nicht vorhanden):
(.gnu.linkonce. [stuff]): undefinierter Verweis auf [method] [Objektdatei] :(. gnu.linkonce. [stuff]): undefinierter Verweis auf typeinfo für [Klassenname]
Warum könnte man einen dieser "undefinierten Verweise auf typeinfo" Linkerfehler bekommen?
(Bonuspunkte, wenn Sie erklären können, was sich hinter den Kulissen abspielt.)
virtual void abc() =0;
(wenn die Basisversion nie aufgerufen wird)
abc()
, können Sie leicht vergessen, abc()
die abgeleitete Klasse neu zu definieren und denken, dass alles in Ordnung ist, da Sie die Funktion weiterhin problemlos aufrufen können. Eine gute Vorgehensweise zum Implementieren von reinen virtuellen Funktionen finden Sie in diesem Artikel . Hiermit wird die Funktion "Reine virtuelle Funktion aufgerufen" gedruckt und anschließend das Programm zum Absturz gebracht.
= 0;
.