最終更新日時: 2025年07月12日 02時16分44秒 (JST)
Koichi Murase が更新

履歴 編集

class
<typeinfo>

# std::bad_typeid

    namespace std {
      class bad_typeid : public exception;
    }

## 概要

`bad_typeid`クラスは、ヌルポインタを指すオブジェクトを間接参照して`typeid`演算子に渡された場合に送出される例外である。

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
(constructor) | コンストラクタ |
(destructor) | デストラクタ |
`operator=` | 代入演算子 |
`what` | エラー理由を取得する |

## 例

    #include <iostream>
    #include <typeinfo>

    struct Polymorphic { virtual void f() {} };

    int main()
    {
      try {
        Polymorphic* p = 0;

        // オブジェクトpは Polymorphic* 型
        std::cout << "1: " << typeid(p).name() << std::endl;

        // ヌルポインタを指すオブジェクトを間接参照してtypeid演算子に渡す…
        std::cout << "2: " << typeid(*p).name() << std::endl;
      }
      catch (std::bad_typeid& e) {
        std::cerr << e.what() << std::endl;
      }
    }

### 出力例

    1: Polymorphic*
    std::bad_typeid

## 参照