我正在使用g ++编译Cygwin中的C++程序,并且我有一个构造函数没有参数的类。我有台词:没有参数的语言标准的构造函数没有括号?
MyClass myObj();
myObj.function1();
,并试图对其进行编译的时候,我得到的消息:
错误:请在“MyObj中”,这是无级式的“成员“功能1” MyClass的()()'
经过一番研究,我发现修复方法是将第一行更改为 MyClass myObj;
我可以发誓我已经在C++中使用括号完成了空的构造函数声明。这可能是我正在使用的编译器的限制,还是语言标准真的说不使用不带参数的构造函数的括号?
扩大 - 这只是在某些情况下的问题。写下“抛出myexceptionclass();”,例如,并没有混淆。这种语言在Petes语境中是不明确的,但是对规则的歧义化(语言严格地说并不是真正含糊不清的原因)选择了一种解释。当然,消歧规则意味着语言并不是真正含糊不清 - 但解析专家反正说,所以我也被允许!很多语言中最常见的消歧规则是针对运算符的优先级和关联性的--C和C++更加模糊,因此存在一些奇怪的问题。 – Steve314 2010-02-23 14:22:01