在这段示例代码中,有两个句子显示相同的静态变量。第一个句子没有歧义,但第二个句子却有歧义,为什么?
#include <iostream>
using namespace std;
struct A { static const char a = 'a'; };
struct B : public A { };
struct C : public A { };
struct G : public B, public C { };
int main()
{
G v;
cout << G::B::A::a << endl;
cout << v.B::A::a << endl;
}
GCC错误(根据一些评论,clang中没有歧义):
main.cpp:15:18: error: 'A' is an ambiguous base of 'G'
cout << v.B::A::a << endl;
v
情况下不知道该使用哪个父级。正在尝试找到它。 - NathanOliver