我有一个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中执行此操作?怎么样?
答案 0 :(得分:1)
您可以使用dynamic_cast
尝试将其强制转换为基类/派生类型。如果它不返回NULL,那么它是一个基类或从该类型派生(取决于你是否构建了层次结构或向下)
答案 1 :(得分:0)
您可以使用 typeinfo 来获取对象的类型 或者您可以使用 dynamic_cast 来检查指针是否指向适当类型的对象。