type_infoクラスがstd名前空間だった?
c++にてtypeid演算子からtype_infoクラスの参照を受け取る時、何故か
何でだろう、cygwinのgccだからか?(g++ではなく、gccに-lstdc++としている)
#include <iostream> class CBase { public: virtual ~CBase(){} // スーパークラスは仮想デストラクタを宣言しておく }; class CSub1 : public CBase { }; class CSub2 : public CBase { }; int main() { CBase base_obj; CSub1 sub1_obj; CSub2 sub2_obj; // ↓ここの3つのどれか1つだけを有効にして実行してみる // CBase *p = &base_obj; // CBase *p = &sub1_obj; CBase *p = &sub2_obj; const std::type_info& info = typeid( *p ); // 実行時型情報を取得 if( info == typeid( CBase ) ){ std::cout << "CBase" << std::endl; }else if( info == typeid( CSub1 ) ){ std::cout << "CSub1" << std::endl; }else if( info == typeid( CSub2 ) ){ std::cout << "CSub2" << std::endl; } return 0; }