c++ - 覆盖功能不起作用
问题描述
我有一个基类和派生类,派生类覆盖基类中的函数
struct Base{
virtual void action(){}
}
struct Derived:public Base{
virtual void action() override{}
}
我有另一个使用 Base 接口的类,如下所示
struct Observable{
deque<Base> myObjects;
void addObject(Base &base){
myObjects.push_back(base);
}
void notify(){
for (auto it = myObjects.begin(); it != myObjects.end(); it++) {
it.action();
}
}
}
在main中,我像这样初始化了观察者类
Derived myDeived;
Observable observable;
observable.addObject(myDerived);
observable.notify();
当我调用“通知”并因此它调用数组中的所有“动作”函数时的问题它不调用在派生但在基类中覆盖的“动作”函数?请解释一下为什么会发生这种情况以及如何纠正它?谢谢
解决方案
推荐阅读
- pyomo - 如何将 bonmin 添加到 pyomo 求解器?
- php - 登录仅在谷歌浏览器上无法在我的网站上工作
- java - 如何在 Java 8 中显示最后修改的 LocalDateTime?
- php - 在mysql中将UTF8数据转换为latin1
- linux - 如何在 systemd Ubuntu 18.04 上启动时自动执行 shell 脚本
- python - Python - 识别用户输入中的某些关键字,然后得出答案
- node.js - kafka-node:消费者组成员/实例
- c++ - 迭代器和简单的赋值/析构函数
- javascript - Javascript 对象 - 过滤并获取所需内容
- sql-server - SQL Server 2017 中的错误