为什么这些方法调用不明确?

时间:2016-07-12 10:11:45

标签: c++ multiple-inheritance ambiguity member-functions name-lookup

scanf("%d",arr[i])

有人可以向我解释为什么这些方法调用不明确吗?

当它们以“Writeonly”或“Readonly”放在一起时,它们并不含糊。

我想将它用于基于模板的访问器属性。因此,我希望能够使用“Writeonly”,“Readonly”和“Unrestricted”的实例。

2 个答案:

答案 0 :(得分:6)

因为编译器在两个不同的范围内找到了名称。

诀窍是将两个名字都纳入Unrestricted

的范围
class Unrestricted : public Readonly, public Writeonly {
  public:
  using Readonly::method;
  using Writeonly::method;
};

答案 1 :(得分:0)

可能你觉得它有效,因为你正在考虑函数重载。问题是不同的功能在不同的范围内。在这种情况下,编译器没有重载函数列表来选择正确的函数。

如果你想让它工作,你必须将函数放在同一范围内。