C ++ Pure Virtual Initializer

时间:2014-01-14 06:00:46

标签: c++ methods constructor initialization abstract

我有几个子类,我不想重写某些初始化代码..我尝试过类似的东西..

#include <iostream>

struct A {
   A() { init(); }
   virtual ~A() {}
   void init() { load(); }

   virtual void load() = 0;
};

struct B : public A {
    void load() { std::cout << "loading.." << std::endl; }
};

int  main(int argc, char* argv[])
{
    A* a = new B; delete a;
    return 0;
}

这给出了运行时错误/异常 - “称为纯虚方法”。我已经读过其他线程,解释说这是不可能的;但除了被迫在子类中反复重写相同的代码之外,我没有看到任何解决方案。是否有更好的方法来封装它? (除了在子构造函数中执行此操作..)

0 个答案:

没有答案