说我有这两个类,一个是另一个的儿子:

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,那是无法做到的:)

关于c++ - 从另一个基本方法调用重写的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30047846/

10-10 08:15