所以我有一个类层次结构,其基本上具有Entity
类作为父抽象类和一束从它派生的其他类的的STL矢量调用一个特定对象的功能,如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 <>'](http://stackoverflow.com/questions/332030/when-should-static-cast-dynamic-cast-and-reinterpret-cast-be-used)可能有些用处您。不要只是把它扔进去,阅读如何使用它**先**。 – WhozCraig