如何解决C ++多继承中的函数名冲突?

时间:2019-06-05 18:39:28

标签: c++ inheritance

我从两个类继承。这两个类都包含相同的函数名,但是一个正在实现,一个是纯虚函数。有什么办法可以使用已经实施的方法?

#include <iostream>
using namespace std;


class BaseA {
public:
    void DoSomething() {
        value += 1;
        std::cout<<"DoSomething():"<< value<<endl;
    }

    int value;
};


class BaseB {
public:
      virtual void DoSomething() =0;
};


class Derived : public BaseA, public BaseB {
public:
    Derived() { value = 0; }

    // Compiler complains DoSomething() is not implemented.
    // Can we just use BaseA.DoSomething()?
};

int main() {
    Derived* obj = new Derived();
    obj->DoSomething();
}

1 个答案:

答案 0 :(得分:0)

您需要定义一个函数,因为DoSomethingBaseB类中的纯虚函数。但是您可以在实现中的DoSomething类中调用BaseA

void DoSomething(){
    BaseA::DoSomething();
}