Understanding the "Constructor with No Arguments" Error
Upon compiling a C program with a constructor with no arguments using g in Cygwin, you may encounter the cryptic error message: "error: request for member 'function1' in 'myObj', which is of non-class type 'MyClass ()()'".
This error stems from a misunderstanding regarding the syntax of constructor declarations in C . According to the language standard, the ambiguous syntax "MyClass myObj();" can be interpreted either as an object definition or a function declaration. However, the standard resolves this ambiguity by prioritizing the function declaration interpretation.
Therefore, to avoid this error, you should explicitly declare your object without parentheses, as follows:
MyClass myObj;
This declaration clarifies that "myObj" is an object of type "MyClass" and not a function declaration.
In summary, the error "Constructor with No Arguments" arises when the compiler misinterprets the syntax for object declaration and resolves it as a function declaration. To prevent this error, ensure that you declare your objects without parentheses for constructors without arguments.
The above is the detailed content of Why Does My C Program Throw a 'Constructor with No Arguments' Error?. For more information, please follow other related articles on the PHP Chinese website!