c++在循环中重写函数
C++ overriden functions in loops
好了,我试着从c++中的一个类调用一个函数,它覆盖了父类中的一个函数。
类设置:
BaseClass
的更新函数声明如下:
virtual void update() = 0;
然后我有扩展BaseClass
的Object
类。在这个类中,我通过以下方式再次声明update:
virtual void update() override;
然后我有我的Player
类,它的更新函数声明如下:
void update() override;
然后存储object的vector,并循环遍历该vector:
std::vector<Object> _objs
我是否必须创建一个新的向量来循环调用右更新函数,或者当我循环遍历一个对象数组时,是否有某种方法可以调用右更新函数?
您需要使用vector或pointer
std::vector<Object*>
或智能指针
std::vector<std::shared_ptr<Object>>
如果你不这样做,添加一个Player
对象到向量将导致对象切片。Player
将被转换为Object
,因此将调用Object
对update()
的实现。
相关文章:
- C++调用使用重写函数的父类函数
- 重写函数不打印基类数据
- 在 c++ 中重写函数时如何选择基类?
- 为什么继承的函数忽略了在原始函数中调用的重写函数?
- 在不提供定义的情况下重写函数有什么意义?
- 建议用户使用 lambda 重写函数
- 如何创建使用重写函数的非成员函数?
- 调用重写函数并使用基类中的重载变量
- 重写函数的默认参数
- 从父级调用派生类重写函数.C++
- C++子类中的重写函数成员
- 函数中的指针不称为派生类的重写函数
- 基类数组中重写函数的使用
- 如何使用协变参数重写函数(在抽象基类中)
- c++ 调用子类而不是父类的重写函数
- C++:从模板化基类重写函数
- 使用派生类的类型重写函数参数类型
- c++仅为特定实例重写函数
- 需要一个关于用const参数重写函数的警告
- Qt/C++重写函数而不进行子类化