我具有这样的类层次结构:
class Base
{
public:
void start() { init(); }
private:
virtual void init() = 0;
};
class Default : public Base
{
private:
virtual void init() override {/*default implementation*/};
};
class Special : public Default
{
private:
virtual void init() override final {/*specialized implementation*/};
}
如果我在类型为start()
的对象上调用Special
,这可以正常工作;
现在我有一种情况,在Special
类的实现中,我想调用Default
类的实现。通常,此选项适用于Default::init();
,但由于Default
的声明为private
而在此处失败。
显然,一种解决方案是将其从private
更改为protected
,但我想问一下是否还有另一种方法?我不想允许任何孩子直接调用此函数,而是将其限制为通过Base
或Default
类中已经定义的虚函数启动的调用。
是否有一些选项或修饰符允许成员函数调用仅在子类位于(相同)重写虚拟成员函数之内时才允许子类进行?
我有一个这样的类层次结构:class Base {public:void start(){init(); } private:虚拟void init()= 0; }; class默认:public Base {private:虚拟void init()覆盖{/ * ...
C ++没有提供直接实现此目的的方法,因此您必须解决,例如G。在下面的代码中。好吧,如果您绝对想要