0
讓我們假設情況。重複繼承。曖昧
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;歧義出現?
順便說一下,我試過這個代碼在visual studio 2012(默認編譯器設置),它編譯。但gcc - 4.6(Ubuntu的)給出了這個錯誤。所以據我瞭解這是gcc - 4.6問題,或?我不知道,如果有人知道這件事,請寫下答案。 – 2013-03-04 14:12:46