我使用带有RTTI的C++。我有一个类的type_info
。如果我只有type_info
,我如何判断另一个类是否是第一个类的子类?
#include <typeinfo>
class Foo { public: virtual ~Foo() {} };
class Boo: public Foo { public: virtual ~Boo() {} };
class Bar { public: virtual ~Bar() {} };
template<class T>
bool instanceOf(const type_info& info) {
// ANSWER COMES HERE!!
}
int main(int argc, const char* argv[]) {
const type_info& fooInfo = typeid(Foo);
const type_info& barInfo = typeid(Bar);
bool booIsFoo = instanceOf<Boo>(fooInfo); // should be true
bool booIsBar = instanceOf<Boo>(barInfo); // should be false
return 0;
}
std::is_base_of
和dynamic_cast
需要类型作为模板参数,但我无法将其存储以供以后使用。 - aedm