bad_cast, wyjątek
Wyjątek bad_cast jest zgłaszany przez dynamic_cast
operatora w wyniku nieudanego rzutowania do typu odwołania.
Składnia
catch (bad_cast)
statement
Uwagi
Interfejs dla bad_cast to:
class bad_cast : public exception
Poniższy kod zawiera przykład błędu dynamic_cast
, który zgłasza wyjątek bad_cast .
// 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();
}
}
Wyjątek jest zgłaszany, ponieważ rzutowanie obiektu (kształt) nie pochodzi z określonego typu rzutowania (Circle). Aby uniknąć wyjątku, dodaj następujące deklaracje do elementu main
:
Circle circle_instance;
Circle& ref_circle = circle_instance;
Następnie odwrócić poczucie rzutowania w bloku w try
następujący sposób:
Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);
Członkowie
Konstruktory
Konstruktor | opis |
---|---|
bad_cast | Konstruktor dla obiektów typu bad_cast . |
Funkcje
Function | opis |
---|---|
Co | Do ustalenia |
Operatory
Operator | opis |
---|---|
operator = | Operator przypisania, który przypisuje jeden bad_cast obiekt do innego. |
bad_cast
Konstruktor dla obiektów typu bad_cast
.
bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);
operator =
Operator przypisania, który przypisuje jeden bad_cast
obiekt do innego.
bad_cast& operator=(const bad_cast&) noexcept;
Co
const char* what() const noexcept override;
Zobacz też
Operator dynamic_cast
Słowa kluczowe
Nowoczesne najlepsze rozwiązania dotyczące języka C++ dotyczące wyjątków i obsługi błędów
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla