愚蠢的错误:关于C2533错误

愚蠢的错误:关于C2533错误

Edit(2007/4/17):很抱歉的咒骂了VC编译器,其实只是自己的问题,特此修订一下这个日志,还让那么人看了,我想应该订正一下才好.在此表示抱歉了.

今天写了一个类,头文件声明如下:
class  CConfigManager
{

public:
    CConfigManager(
void);
    
~CConfigManager(void);
}
结果编译器给我报错:

error C2533: CConfigManager::CConfigManager' : constructors not allowed a return type

我查了下MSDN,MSDN上面说:
编译器错误 C2533 
 
 语言筛选器: 全部 语言筛选器: 多个 语言筛选器: Visual Basic 语言筛选器: C# 语言筛选器: C++ 语言筛选器: J# 语言筛选器: JScript 
 Visual Basic(声明)
 Visual Basic(用法)
 C#
 C++
 J#
 JScript

错误消息
“identifier”: 构造函数不允许返回类型


构造函数不能有返回类型(甚至不能有 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构造函数不允许返回一个类型.
构造函数是没有返回值类型的....

只是我当时粗心大意,和理解的问题造成这个日志的.
现在特别修改了它,希望其他碰到此类问题的朋友有一些深刻的意义.
我有什么不对之处,也请各位不吝赐教,批评指正.

你可能感兴趣的:(愚蠢的错误:关于C2533错误)