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 回答