从另一种基本方法调用Overriden方法

Call overriden method from another base method

本文关键字:方法 调用 Overriden 另一种      更新时间:2023-10-16

说我有这两个班级,另一个儿子:

class Base
{
public:
    void someFunc() { cout << "Base::someFunc" << endl; }
    void someOtherFunc() { 
        cout << "Base::someOtherFunc" << endl;
        someFunc(); //calls Base:someFunc()
    };
class Derived : public Base
{
public: 
    void someFunc() { cout << "Derived::someFunc" << endl; }
};
int main()
{
    Base b* = new Derived();
    b->someOtherFunc();    // Calls Base::someOtherFunc()
}

如何使基类调用正确的somefunc()方法?

注意:我无法编辑基类。

您需要制作someFunc虚拟,如果您不能编辑Base:)

class Base
{
public:
    virtual void someFunc() { cout << "Base::someFunc" << endl; }
    void someOtherFunc() { 
        cout << "Base::someOtherFunc" << endl;
        someFunc(); //calls Base:someFunc()
    };