关于C ++多重继承:C ++多重继承 – 基类中的方法相同但参数不同

C++ multiple inheritance - same methods in base classes but with different arguments

我有以下不编译的程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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"的请求不明确注意:候选项是:虚拟void接口1::f()…注:虚拟虚接口2::f(int i)


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