【发布时间】:2014-02-02 21:51:01
【问题描述】:
所以当派生类存储在其基类的数组中时,我遇到了调用派生类的覆盖函数的问题。
基类称为 Obstacle,派生类称为 Cliff。 Obstacle有一个虚函数drawToBackground,继承自Obstacle的Cliff也有一个函数drawToBackground,两者都是void。
然后我有一个障碍向量,称为 obstsVec。在这个向量中,我存储了一堆障碍物和一个悬崖。现在说悬崖是向量的第五个元素。当我调用 obstsVec[5].drawToBackground();它从 Obstacle 类而不是悬崖类调用 drawToBackground 函数。
这是 c++ 中的一个功能,还是我只是声明了一些错误?
谢谢
【问题讨论】:
-
没有代码很难确定,但我认为您需要研究对象切片。
-
如何将
Cliff存储在vector<Obstacle>中? -
@Beta 不确定。我从 c# 到 c++,我很确定这在 c# 中是可能的。不过,我猜我在 C++ 中使用它是错误的。
标签: c++ object inheritance vector polymorphism