Klasse bad_cast
Nach oben zu Typeinfo.h - Index
Inhaltsverzeichnis
Header-Datei
typeinfo.h
Beschreibung
Wenn die Typumwandlung einer Referenz mit dynamic_cast fehlschlägt, kann der Ausdruck einen bad_cast auslösen. Beachten Sie, dass ein NULL-Zeiger zurückgegeben wird, wenn dynamic_cast den Zeigertyp nicht umwandeln kann.
Beispiel
So führen Sie die Identifikation von Typen zur Laufzeit (RTTI) aus:
#include <iostream>
#include <typeinfo.h>
using std::cout;
class __rtti Alpha {
virtual void func() {}; // Alpha ist ein polymorpher Klassentyp.
};
class B : public Alpha {};
int main(void)
{
B Binst; // Instanz der Klasse B erzeugen
B *Bptr; // Zeiger vom Typ "Zeiger auf B" deklarieren
Bptr = &Binst; // Den Zeiger initialisieren
// FOLGENDE PRÜFUNGEN FINDEN ZUR LAUFZEIT STATT
// Frage: "WELCHEN TYP HAT *Bptr?"
if (typeid( *Bptr ) == typeid( B ) )
cout << "Der Name ist " << typeid( *Bptr).name();
if (typeid( *Bptr ) != typeid( Alpha ) )
cout << "\nZeiger ist nicht vom Typ Zeiger auf Alpha.";
return 0;
}
Programmausgabe:
Der Name ist B
Zeiger ist nicht vom Typ Zeiger auf Alpha.