C ++多重继承 - 基类中的相同方法,但具有不同的参数

时间:2016-11-26 23:16:11

标签: c++ multiple-inheritance

我有以下没有编译的程序:

class Interface1
{
    virtual void f() = 0;
};

class Interface2
{
    virtual void f(int i) = 0;
};

class Interface3 : public Interface1,
                   public Interface2
{};

class C : public Interface3
{
    virtual void f() {}
    virtual void f(int i) {}
};

int main()
{
    Interface3* inter = new C();
    inter->f(); // Error
}

有什么问题?这是否意味着如果方法具有不同的参数类型并不重要?

错误:成员'f'的请求不明确 注意:候选人是:virtual void Interface1 :: f()
...
注意:virtual void Interface2 :: f(int i)

1 个答案:

答案 0 :(得分:1)

问题是两个基类型中的f的两个定义没有在同一范围内定义,因此它们不会重载。 f中有两个名为Interface3的单独函数,没有选择其中一个的规则。