Heim > Artikel > Backend-Entwicklung > Warum erhalte ich in meinem C-Programm die Fehlermeldung „Undefinierte Symbole: „vtable“ und „typeinfo“?
Undefinierte Symbole: „vtable“ und „typeinfo“
Frage:
Beim Kompilieren Bei einem C-Programm treten folgende Fehler auf:
Undefined symbols: "vtable for Obstacle" "typeinfo for Obstacle"
Was bedeuten diese Symbole und wie können sie behoben werden?
Antwort:
In C ist eine virtuelle Methode eine Methode, die in einer Basisklasse deklariert und in abgeleiteten Klassen überschrieben wird. Um eine dynamische Bindung an die richtige Methode zur Laufzeit zu ermöglichen, generiert der Compiler eine virtuelle Methodentabelle (vtable) und Typinformationen (typeinfo) für jede Klasse, die virtuelle Methoden enthält.
Die Fehler weisen darauf hin, dass der Compiler dazu nicht in der Lage ist Finden Sie die vtable und typeinfo für die Obstacle-Klasse. Dies kann auftreten, wenn:
Um diese Fehler zu beheben, stellen Sie sicher, dass alle virtuellen Methoden in der Obstacle-Klasse als rein virtuell deklariert werden, indem Sie die folgende Syntax verwenden:
<code class="cpp">virtual void Method() = 0;</code>
Dies zeigt an, dass die Methode überschrieben werden muss in einer abgeleiteten Klasse und dass sie möglicherweise keine eigene Implementierung in der Basisklasse hat.
Wenn die Obstacle-Klasse nicht rein virtuelle Methoden enthält, stellen Sie sicher, dass diese in einer abgeleiteten Klasse implementiert sind. Andernfalls geht der Compiler davon aus, dass er irgendwo eine Implementierung hat, und generiert die vtable und typeinfo in einer Objektdatei, die nicht die eigentliche Implementierung enthält.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in meinem C-Programm die Fehlermeldung „Undefinierte Symbole: „vtable“ und „typeinfo“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!