今天寫了類如下
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構造函數不允許傳回一個類型.
構造函數是沒有傳回值類型的....