从父亲到孩子的动态转换

时间:2018-09-19 15:15:23

标签: c++ oop

当我像这样进行动态投射时,我已经创建了三个类(生物,龙,巫师),龙和巫师是从生物类继承的。

void dragon::atk(creature *creat){
if(dynamic_cast<dragon*>(creat))
    //

不能dynamic_cast“创建”(类型为“类生物*”的类型)以键入“类龙*”(源类型不是多态的)|

我进行了很多搜索,但不知道为什么会发生此错误

1 个答案:

答案 0 :(得分:1)

dynamic_cast通常为requires polymorphic types。这意味着所涉及的类型必须至少具有一个虚拟成员函数(可以是析构函数)。