同样愚蠢的错误:关于C2533错误

今天写了类如下

class A
{
public:
    A();
private:
int m_int ;
}

A()
{
 m_int = 0;
}


悲剧的错误就发生了,总是有C2533的编译器错误

可怜的我尽然没找到为什么错了,设置连类都没有仔细看,罪过啊

原因:类声明少了分号

后又查了网:

 构造函数不能有返回类型(甚至不能有 void 返回类型)。

下面的示例生成 C2533:

// C2533.cpp
// compile with: /c
class X {
public:
   X();  
};

int X::X() {}   // C2533
X::X(){}   // OK

我当时没有弄明白.实质上编译器的角度来看这是正确的.
当头文件被include以后,也就和cpp文件合成一个文件了,
这个时候就是这种情况了:

 

class  CConfigManager 

public
CConfigManager(
void); 
~CConfigManager(void); 
}
 

CConfigManager::CConfigManager() 
{
}


 


 

这个时候,实际上就像这样了:

 

class  CConfigManager {}  CConfigManager::CConfigManager()
{}

 

 

也就是说我这个时候定义了一个类型,并且它是构造函数的返回值类型.编译器告诉我说:

constructors not allowed a return type构造函数不允许返回一个类型.
构造函数是没有返回值类型的....

 

你可能感兴趣的:(c,Class,include,编译器)