首页 > 解决方案 > 覆盖功能不起作用

问题描述

我有一个基类和派生类,派生类覆盖基类中的函数

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();

当我调用“通知”并因此它调用数组中的所有“动作”函数时的问题它不调用在派生但在基类中覆盖的“动作”函数?请解释一下为什么会发生这种情况以及如何纠正它?谢谢

标签: c++overriding

解决方案


推荐阅读