상황을 가정 해 봅시다.상속을 반복했습니다. Ambiguous
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()를 작성하여 Qualifier Left : x로 x에 액세스하면 표시됩니다. 모호성이 없으므로 더 자세한 액세스 규정자를 사용할 때 왜 Left :: Top :: x; 모호함이 나타 납니까?
그런데 나는 시각적 스튜디오 2012 (기본 컴파일러 설정) 에서이 코드를 시도하고 컴파일. 하지만 gcc - 4.6 (우분투)에서는 오류가 발생합니다. 그래서 내가 gcc - 4.6 문제라고 이해하거나 ??? 모르겠어요. 누군가가 그것에 대해 뭔가를 알고 있다면 대답을 적어주세요. –