我一直在使用dynamic_cast來確定對象的父子關係。可能使用typeid來確定父子關係
#include <iostream>
class A {
public:
virtual ~A() {}
};
class B : public A {
};
class C : public A {
};
int main()
{
B b;
std::cout<< typeid(b).name()<< std::endl; // class B
A* a = dynamic_cast<A *>(&b);
if (a) {
std::cout<< "is child of A"<< std::endl; // printed
}
C* c = dynamic_cast<C *>(&b);
if (c) {
std::cout<< "is child of C"<< std::endl; // Not printed
}
getchar();
}
我可以知道是否有可能通過typeid來確定對象的父 - 子關係?例如,如何通過使用typeid檢查來知道B是A的孩子?
謝謝。
http://www.boost.org/doc/libs/release/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html – 2009-11-19 02:02:36