名前空間
変種
操作

std::bad_cast

提供: cppreference.com
< cpp‎ | types
 
 
 
型サポート
基本的な型
基本型
固定幅の整数型 (C++11)
数値の限界
C の数値限界インタフェース
実行時型情報
bad_cast
型特性
型カテゴリ
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
型プロトタイプ
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
エンディアン
(C++20)
サポートされている操作
関係と性質の問い合わせ
(C++11)
(C++11)
型変更
(C++11)(C++11)(C++11)
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
 
ヘッダ <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の仮想パブリックメンバ関数) [edit]
[仮想]
説明文字列を返します
(std::exceptionの仮想パブリックメンバ関数) [edit]

[編集]

#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