В этом примере кода есть два предложения, показывающие одну и ту же статическую переменную. Первый не дает двусмысленности, а второй дает, почему?
#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
. Пытаюсь найти. - person NathanOliver   schedule 25.05.2016struct E : public C
? - person barak manos   schedule 25.05.2016