bad_cast 예외

bad_cast 예외는 참조 형식에 대한 캐스팅 실패의 결과로 연산자에 의해 dynamic_cast throw됩니다.

구문

catch (bad_cast)
   statement

설명

bad_cast 인터페이스는 다음과 같습니다.

class bad_cast : public exception

다음 코드에는 bad_cast 예외를 throw하는 실패한 dynamic_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();
   }
}

캐스팅되는 개체(셰이프)가 지정된 캐스트 형식(원)에서 파생되지 않으므로 예외가 throw됩니다. 예외를 방지하려면 main에 다음과 같은 선언을 추가합니다.

Circle circle_instance;
Circle& ref_circle = circle_instance;

그런 다음 블록의 캐스트 try 감각을 다음과 같이 반대로 바꿉니다.

Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);

멤버

생성자

생성자 Description
bad_cast bad_cast 형식의 개체에 대한 생성자입니다.

함수

함수 설명
무엇 미정

연산자

연산자 설명
operator= bad_cast 개체를 다른 개체에 할당하는 할당 연산자입니다.

bad_cast

bad_cast 형식의 개체에 대한 생성자입니다.

bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);

operator=

bad_cast 개체를 다른 개체에 할당하는 할당 연산자입니다.

bad_cast& operator=(const bad_cast&) noexcept;

대상

const char* what() const noexcept override;

참고 항목

dynamic_cast 연산자
키워드
예외 및 오류 처리에 대한 최신 C++ 모범 사례