【发布时间】:2013-08-19 21:02:48
【问题描述】:
所以我有一个类层次结构,它本质上将Entity 类作为父抽象类和一堆从它派生的其他类,例如Door、Player、Ground 等。
我还有一个三维的vector,它存储了指向Entity 类型对象的指针,我用派生对象填充了这个vector。
在Door 类中,我有一个名为isOpen() 的方法,它只返回一个bool。此函数特定于 Door 类,既不在 Entity 类中,也不在它的任何其他派生中(因为我不需要检查,例如,Ground 对象是否打开) .
现在,知道在vector 位置i、j、k 存在一个类型为Door 的对象,我想像这样调用isOpen 方法:vector[i][j][k]->isOpen()。不幸的是,当我这样做时,编译器返回 class Entity has no member named isOpen()。这是可以理解的,因为函数 isOpen() 是 Door 类独有的,但是我该怎么做才能使这种调用成为可能?
【问题讨论】:
-
不要只告诉我们您的代码; 显示它更多更有效率。其次,
dynamic_cast<>可能对您有用。不要只是把它扔进去,首先了解如何使用它。
标签: c++ function vector polymorphism virtual