std::bad_cast

定义于头文件 <typeinfo>
class bad_cast : public std::exception;

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

cpp/error/exceptionstd-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

版本历史

  • (当前 | 先前 2017年8月26日 (六) 20:27Fruderica讨论 | 贡献 . . (937字节) (-177). . (撤销)
  • 当前 | 先前 2017年3月30日 (四) 04:44Fruderica讨论 | 贡献. . (1,114字节) (-158). . (撤销)
  • 当前 | 先前 2014年10月26日 (日) 18:12P12bot讨论 | 贡献 . . (1,272字节) (0). . (Fix some translations) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 11:38P12bot讨论 | 贡献 . . (1,272字节) (-15). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 17:25P12bot讨论 | 贡献 . . (1,287字节) (+209). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 11:35P12讨论 | 贡献 . . (1,078字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (1,078字节) (-24). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 03:33P12讨论 | 贡献 . . (1,102字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (1,102字节) (+1,102). . (Translated from the English version using Google Translate)