Klasse bad_cast

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Typeinfo.h - Index


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.