我正在尝试学习一些Java中的面向对象编程方面在C++中的应用。然而,在使用dynamic_cast时,我遇到了一些困难,因为这个问题在Java中使用instanceof。
我有一个基类Cell和一个派生(抽象)类Obstacle。我已经这样定义了:Obstacle : public Cell
,并且Obstacle
包含一个纯虚析构函数。现在,在Cell
类中,我想要实现一个方法bool Cell::isAccesible()
。我已经按如下方式实现了它:
bool Cell::isAccessible() {
Obstacle *obs = dynamic_cast<Obstacle*>(this);
if (obs != NULL) return false;
return true;
}
然而我收到了以下错误信息:
"the operand of a runtime dynamic_cast must have a polymorphic class type"
我的实现方式有什么问题?请给予指导,感谢。
instanceof
或在C++中使用dynamic_cast
来执行类型切换是你应该避免的。这会创建循环依赖,因为基类需要知道派生类的信息,反之亦然。 - David Rodríguez - dribeas