0

オブジェクトが特定のタイプであるかどうかを確認したい Visual Studio 2008 C++03 プロジェクトがあります。

例えば:

int main()
{
    struct A { virtual ~A() { }; };
    struct B : public A { };
    struct C : public A { };

    A* b = new B();
    A* c = new C();

    assert( typeof( b ) == typeof( B ) );
    assert( typeof( b ) != typeof( C ) );

    assert( typeof( c ) == typeof( C ) );
    assert( typeof( c ) != typeof( B ) );

    assert( typeof( b ) != typeof( c ) );
    return 0;
}

C++03 でこれを行う方法はありますか? どのように?

4

2 に答える 2

1

を使用dynamic_castして、基本/派生型にキャストすることができます。NULL を返さない場合は、基本クラスであるか、その型から派生したものです (階層を上にキャストするか下にキャストするかによって異なります)。

于 2012-05-22T16:01:02.807 に答える
0

オブジェクトの型を取得するためにtypeinfoを使用できます。
または、dynamic_castを使用して、ポインターが適切な型のオブジェクトを指しているかどうかを確認することもできます。

于 2012-05-22T16:01:06.120 に答える