从基指针调用派生方法

Call derived method from base pointer

本文关键字:派生 方法 调用 指针      更新时间:2023-10-16

我想做以下事情:

void do_stuff(Base* base_ptr) {
   // here I need the overridden methods
   base_ptr->init();
}
class Base {
   Base() {
     do_stuff(this);
   }
   virtual void init() {}
};
class Derived : public Base {
   virtual void init() override {
      // Derived specific init
   }
}

但我得到的只是对Base::init()的调用,是否有可能实现我的意图?

您正在从构造函数中调用一个虚拟函数!

重复->调用构造函数内的虚拟函数