Was ist der Zweck von __cxa_pure_virtual?

Während der Kompilierung mit avr-gcc habe ich festgestellt linker-Fehler wie der folgende:

undefined reference to `__cxa_pure_virtual'

Habe ich gefunden dieses Dokument, die besagt:

Den __cxa_pure_virtual Funktion einen error-handler, der aufgerufen wird, wenn eine rein virtuelle Funktion aufgerufen wird.

Wenn Sie das schreiben eines C++ - Anwendung, die hat rein virtuelle Funktionen müssen Sie liefern Ihre eigene __cxa_pure_virtual error-handler-Funktion. Zum Beispiel:

extern "C" void __cxa_pure_virtual() { while (1); }

Definition dieser Funktion, wie vorgeschlagen, behebt die Fehler, aber ich würde gerne wissen:

  • was der Zweck dieser Funktion ist,
  • warum sollte ich brauchen, um zu definieren, es selbst und
  • warum es akzeptabel ist, dass es code als Endlosschleife?
Möglicherweise erhalten Sie diese Fehlermeldung, wenn mit den gcc Befehl, wo Sie verwenden sollten g++; ich habe es getan mindestens einmal 🙂

InformationsquelleAutor Matthew Murdoch | 2009-05-28

Schreibe einen Kommentar