C++ 从基指针调用派生方法

C++ 从基指针调用派生方法,c++,inheritance,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() overrid

我想做以下几点:

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()的调用,甚至可以执行我想要的操作吗?

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


重复->

Base如何知道派生的?我认为对
new-Derived
的调用在这里被暗示为应该运行的内容。是否允许从构造函数调用虚拟函数?谢谢,可以在Base构造函数的某个全局容器中“注册”对象吗?对虚拟方法的访问将在稍后进行。