让我们假设情况。
struct Top
{
int x;
};
struct Left : public Top
{};
struct Right : public Top
{};
struct Bottom : public Left, public Right
{
void foo()
{
Left::x; // Normal compiled
}
void goo()
{
Left::Top::x; // error: ‘Top’ is an ambiguous base of ‘Bottom’ // Why --- ????
}
};
有人可以解释一下为什么在函数 goo() 编译器中会出现歧义错误吗?
我写了 void foo() 来表明如果我通过限定符 Left::x; 访问 x; 没有歧义,所以为什么当我使用更详细的访问限定符 Left::Top::x; 出现歧义?