天天看點

同樣愚蠢的錯誤:關于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); 

}  

同樣愚蠢的錯誤:關于C2533錯誤

CConfigManager::CConfigManager() 

{

}

這個時候,實際上就像這樣了:

class  CConfigManager {}  CConfigManager::CConfigManager()

{ }

同樣愚蠢的錯誤:關于C2533錯誤

也就是說我這個時候定義了一個類型,并且它是構造函數的傳回值類型.編譯器告訴我說:

constructors not allowed a return type構造函數不允許傳回一個類型.

構造函數是沒有傳回值類型的....

繼續閱讀