type(s) preceding 'identifier' (constructor with return type, or illegal redefinition of current class-name?)
The specified constructor returned a value or redefined the class name.
A constructor cannot specify a return value.
This error can be caused by redefining a class name.
The following is an example of this error:
class C
{
public:
int C(); // error, specifies an int return
int C; // error, redefinition of i
C(); // OK
};