在C++中,如何检查对象的类型是否从特定的类继承?
class Form { };
class Moveable : public Form { };
class Animatable : public Form { };
class Character : public Moveable, public Animatable { };
Character John;
if(John is moveable)
// ...
在我的实现中,对
if
列表的所有元素执行Form
查询。从Moveable
继承的所有类型的对象都可以移动,并且需要其他对象不需要的处理。 最佳答案
您需要的是dynamic_cast
。如果不能执行强制转换,它将以其指针形式返回空指针:
if( Moveable* moveable_john = dynamic_cast< Moveable* >( &John ) )
{
// do something with moveable_john
}