在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
}

10-08 15:48