Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die bad_cast Ausnahme wird vom dynamic_cast-Operator als Folge einer fehlgeschlagenen Umwandlung in einen Verweistyp ausgelöst.
catch (bad_cast)
statement
Hinweise
Die Schnittstelle für bad_cast ist:
class bad_cast : public exception {
public:
bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);
virtual ~bad_cast();
};
Der folgende Code enthält ein Beispiel für fehlgeschlagene dynamic_cast , das die bad_cast Ausnahme auslöst.
// expre_bad_cast_Exception.cpp
// compile with: /EHsc /GR
#include <typeinfo.h>
#include <iostream>
class Shape {
public:
virtual void virtualfunc() const {}
};
class Circle: public Shape {
public:
virtual void virtualfunc() const {}
};
using namespace std;
int main() {
Shape shape_instance;
Shape& ref_shape = shape_instance;
try {
Circle& ref_circle = dynamic_cast<Circle&>(ref_shape);
}
catch (bad_cast b) {
cout << "Caught: " << b.what();
}
}
Diese Ausnahme wird ausgelöst, da das Objekt, das umgewandelt wird (eine Form) nicht vom angegebenen Typ Umwandlungs (Kreis) abgeleitet ist.Um die Ausnahme zu vermeiden, fügen Sie diese Deklarationen hinzu: main
Circle circle_instance;
Circle& ref_circle = circle_instance;
Kehren Sie dann den Sinn der Umwandlung in try-Block um wie folgt:
Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);