从基指针调用派生方法

时间:2015-11-22 11:22:52

标签: c++ inheritance

我想做以下事情:

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()的调用,它甚至可以做我想做的事情吗?

1 个答案:

答案 0 :(得分:2)

您正在构造函数中调用虚函数!

重复 - > Calling virtual functions inside constructors