我试图创建两个类,第一个类具有非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
也是有歧义的,但是有一个可以调用的函数。)
标准中这种行为是否有原因?谢谢!