【发布时间】:2019-06-12 23:41:20
【问题描述】:
我试图创建两个类,第一个类是函数的非 const 实现,第二个类是 const 实现。这是一个小例子:
class Base {
protected:
int some;
};
class A : public virtual Base {
const int& get() const {
return some;
}
};
class B : public virtual Base {
int& get() {
return some;
}
};
class C : public A, B {};
C test;
test.get(); // ambiguous
对get 函数的调用不明确。不管 const 版本需要匹配更多的需求。 (在 const C 上调用 get 也是模棱两可的,但有一个可能的函数可以调用。)
标准中有这种行为的原因吗?谢谢!
【问题讨论】:
标签: c++ inheritance overloading multiple-inheritance