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構造函數不允許返回一個類型.
構造函數是沒有返回值類型的....
只是我當時粗心大意,和理解的問題造成這個日志的.
現在特別修改了它,希望其他碰到此類問題的朋友有一些深刻的意義.
我有什么不對之處,也請各位不吝賜教,批評指正.