我正在使用g ++編譯Cygwin中的C++程序,並且我有一個構造函數沒有參數的類。我有臺詞:沒有參數的語言標準的構造函數沒有括號?
MyClass myObj();
myObj.function1();
,並試圖對其進行編譯的時候,我得到的消息:
錯誤:請在「MyObj中」,這是無級式的「成員「功能1」 MyClass的()()'
經過一番研究,我發現修復方法是將第一行更改爲 MyClass myObj;
我可以發誓我已經在C++中使用括號完成了空的構造函數聲明。這可能是我正在使用的編譯器的限制,還是語言標準真的說不使用不帶參數的構造函數的括號?
擴大 - 這只是在某些情況下的問題。寫下「拋出myexceptionclass();」,例如,並沒有混淆。這種語言在Petes語境中是不明確的,但是對規則的歧義化(語言嚴格地說並不是真正含糊不清的原因)選擇了一種解釋。當然,消歧規則意味着語言並不是真正含糊不清 - 但解析專家反正說,所以我也被允許!很多語言中最常見的消歧規則是針對運算符的優先級和關聯性的--C和C++更加模糊,因此存在一些奇怪的問題。 – Steve314 2010-02-23 14:22:01