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

前端之家收集整理的这篇文章主要介绍了c – 强制实施第三方方法虚拟化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在扩展第三部分库提供的课程.该类,我们称之为Foo,有一个reset()方法,可以调用它来重新启动Foo的行为. reset()方法也在类内部使用.
class Foo
{
  public:
    void reset () {
        /* ... */
    }
    void something () {
        reset();
    }
};

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

class Bar : public Foo
{
  public:
    void reset() {
        /* ...something... */
        Foo::reset();
    }
};

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

有没有办法(不同于重载Foo :: something())使其向后虚拟?

解决方法

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

猜你在找的C&C++相关文章