我试图学习一些我从C++中的Java中了解的面向对象的编程方面。但是我在使用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;
}
但是我得到以下错误:
我要实现此方法的方式出了什么问题?任何指导表示赞赏。
最佳答案
单元类必须至少具有一个虚拟函数才能使用dynamic_cast。同样,如果Cell是您的基类,则它应该具有虚拟析构函数。
您应该将isAccessible设为虚拟函数,并在Obstacle中覆盖它以返回false。
关于c++ - 动态向下转换为抽象类(C++),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23089511/