我的示例代码如下:如何访问基类中的派生类纯虚拟实现?
class Base {
public:
Base() { callVirtualfunc(); }
virtual void funca() = 0;
void callVirtualfunc() { funca(); }
};
// -----------------------------------------
class Derived : public Base{
public:
Derived() : Base() {}
void funca() { cout<<"Hello world"<<endl; }
};
我明白,我不能调用构造函数/析构函数内的纯虚函数。我打电话给他们在功能callVirtualfunc()
。 我越来越:: C++ runtime abort: an undefined pure virtual function was called
。
我这样做是为了:
- 强制所有派生类来实现
funca()
。 - 我也想保证派生类调用
funca()
。
我不能够理解我的错误在这里,请帮助。 有没有解决方法来实现我想要的。
[pure virtual function with implementation]的可能重复(http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) – OMGtechy
您不能从构造函数调用(派生类的)虚函数,期限! –
你误解了'规则'。该规则是,你不能从调用构造函数[或析构]纯虚函数直接_or indirectly_正在创建[或破坏]的对象。你在这里的额外间接没有任何区别。 –