std::bad_cast_C++中文网

定义于头文件 <typeinfo>

class bad_cast : public std::exception;

dynamic_cast 对引用类型运行时检查失败(例如因为类型并非以继承关联)时,还有若请求的平面不存在于本地环境时从 std::use_facet 抛出此类型异常。

cpp/error/exception

std-bad cast-inheritance.svg

继承图

成员函数

构造新的 bad_cast 对象
(公开成员函数)

继承自 std::exception

成员函数

析构该异常对象
(std::exception 的虚公开成员函数)

[虚]

返回解释性字符串
(std::exception 的虚公开成员函数)

示例

运行此代码

#include <iostream>
#include <typeinfo>
 
struct Foo { virtual ~Foo() {} };
struct Bar { virtual ~Bar() {} };
 
int main()
{
    Bar b;
    try {
        Foo& f = dynamic_cast<Foo&>(b);
    } catch(const std::bad_cast& e)
    {
        std::cout << e.what() << '\n';
    }
}

可能的输出:

Bad dynamic cast