强制实施第三方方法虚拟化

Dac*_*cav 7 c++ virtual

我正在扩展第三部分库提供的课程.该类,我们称之为Foo,有一个reset()方法可以调用,以重新启动Foo的行为.该reset()方法也由类内部使用.

class Foo
{
  public:
    void reset () {
        /* ... */
    }
    void something () {
        reset();
    }
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我需要重载该reset()方法以重置我的其他功能:

class Bar : public Foo
{
  public:
    void reset() {
        /* ...something... */
        Foo::reset();
    }
};
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于该Foo::reset()方法不是虚拟的,通过调用Bar::something()我得到的Foo::reset()方法调用而不是Bar::reset().

是否有一种方法(不同于超载Foo::something())使其向后虚拟?

Dav*_*eas 5

您不能扩展不打算扩展的类.