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 Ergebnis einer fehlgeschlagenen Umwandlung in einen Verweistyp ausgelöst.
Syntax
catch (bad_cast)
statement
Hinweise
Die Schnittstelle für bad_cast lautet:
class bad_cast : public exception
Der folgende Code enthält ein Beispiel für einen Fehler dynamic_cast , der die bad_cast Ausnahme auslöst.
// expre_bad_cast_Exception.cpp
// compile with: /EHsc /GR
#include <typeinfo>
#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();
}
}
Die Ausnahme wird ausgelöst, da das zu castde Objekt (eine Form) nicht vom angegebenen Umwandlungstyp (Circle) abgeleitet ist. Um die Ausnahme zu vermeiden, fügen Sie main diese Deklarationen hinzu:
Circle circle_instance;
Circle& ref_circle = circle_instance;
Umkehren Sie dann den Sinn der Umwandlung im try Block wie folgt:
Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);
Member
Konstruktoren
| Konstruktor | Beschreibung |
|---|---|
| bad_cast | Der Konstruktor für Objekte des Typs bad_cast. |
Funktionen
| Funktion | Beschreibung |
|---|---|
| was | TBD |
Operatoren
| Operator | Beschreibung |
|---|---|
| operator= | Ein Zuordnungsoperator, der ein bad_cast Objekt einem anderen zuweist. |
bad_cast
Der Konstruktor für Objekte des Typs bad_cast.
bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);
operator =
Ein Zuordnungsoperator, der ein bad_cast Objekt einem anderen zuweist.
bad_cast& operator=(const bad_cast&) noexcept;
was
const char* what() const noexcept override;
Siehe auch
dynamic_cast-Operator
Schlüsselwörter
Modernes C++: Best Practices für Ausnahmen und Fehlerbehandlung