void S(){}
struct S{};
int main(){
S();
}
在上面的代碼中,main中的表達式'S()'被視爲函數調用表達式,而不是嘗試創建類型'S'的臨時表達式。歧義分辨率
C++標準的哪一部分討論這種表達式的解析以支持函數聲明?出於某種原因,我無法找到它。
void S(){}
struct S{};
int main(){
S();
}
在上面的代碼中,main中的表達式'S()'被視爲函數調用表達式,而不是嘗試創建類型'S'的臨時表達式。歧義分辨率
C++標準的哪一部分討論這種表達式的解析以支持函數聲明?出於某種原因,我無法找到它。
第3.3.7節/ 2
類名(9.1)或枚舉名稱(7.2)可通過一個對象,功能,或在相同的範圍中聲明枚舉的名稱被隱藏。 如果類或枚舉名稱與對象,函數或枚舉器在同一個作用域(以任何順序)中聲明具有相同名稱,則隱藏類或枚舉名稱 無論對象,函數或枚舉器名稱是可見。
然後,你需要使用精細的類型說明符在這種情況下
3.4.4/1闡述類型說明符
的闡述型說明符可以被用於指一個先前聲明的類名或枚舉名,即使 儘管名稱已被非類型聲明(3.3.7)隱藏。詳細說明類型說明符中的類名稱或枚舉名稱可以是簡單的標識符,也可以是合格標識符。
它可以解決或者通過使用範圍解析運算符(:。:)或通過使用虛擬關鍵字(當我們面對的是無論是多或混合繼承
燁好友那是一個感謝 – Chubsdad 2010-11-04 05:19:00
@Chubsdad:':)' – 2010-11-04 05:19:27