tim*_*m_a 3 c++ polymorphism casting
我试图从C++中的java中学习一些面向对象的编程方面.不过我有在使用一些困难dynamic_cast,我会用instanceofJava编写的.
我有一个基类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;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
"运行时dynamic_cast的操作数必须具有多态类类型".
我想要实现这个的方式有什么问题?任何指导表示赞赏.
Cell类必须至少有一个虚函数才能使用dynamic_cast.此外,如果Cell是您的基类,它应该有一个虚拟析构函数.
你应该使isAccessible成为虚函数并在Obstacle中覆盖它以返回false.