2009-12-15 49 views
2

我已經採取了2個OOP C#類,但現在我們的教授正在切換到C++。所以,習慣了C++,我寫了這個非常簡單的程序,但我不斷收到此錯誤:如何擺脫這個構造函數的錯誤?

error C2533: 'Counter::{ctor}' : constructors not allowed a return type

我很困惑,因爲我相信我已經編寫我的默認構造函數的權利。

這裏是我的簡單的計數器類代碼:

class Counter 
{ 
private: 
int count; 
bool isCounted; 

public: 
Counter(); 
bool IsCountable(); 
void IncrementCount(); 
void DecrementCount(); 
int GetCount(); 
} 

Counter::Counter() 
{ 
count = 0; 
isCounted = false; 
} 

bool Counter::IsCountable() 
{ 
if (count == 0) 
    return false; 
else 
    return true; 
} 

void Counter::IncrementCount() 
{ 
count++; 
isCounted = true; 
} 

void Counter::DecrementCount() 
{ 
count--; 
isCounted = true; 
} 

int Counter::GetCount() 
{ 
return count; 
} 

我在做什麼錯?我沒有指定返回類型。或者我不知何故?

+1

請*初始化列表*讀了起來:http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=172 – 2009-12-15 17:49:32

+0

好吧,我會的。 – Alex 2009-12-15 17:51:00

+0

IsCountable可以簡化爲'return count == 0'。 順便說一句,爲什麼你有一個'isCounter'成員,如果它從未被讀取(使用)? – 2009-12-15 19:14:03

回答

14

您在類定義的末尾忘記了分號。如果沒有分號,編譯器會認爲你剛剛定義的類是源文件中的構造函數的返回類型。這是一個常見的C++錯誤,記住解決方案,你會再次需要它。

class Counter 
{ 
private: 
int count; 
bool isCounted; 

public: 
Counter(); 
bool IsCountable(); 
void IncrementCount(); 
void DecrementCount(); 
int GetCount(); 
}; 
+0

哇。就是這樣。在C++中,你需要在你的類定義之後加分號嗎? – Alex 2009-12-15 17:48:50

+0

這是GCC發光的位置 - 你得到了診斷「注意:(可能在'Counter'的定義之後缺少分號)」 – 2009-12-15 17:51:23

+0

@Alex是 - 就像你在C中的結構定義之後需要它們一樣。 – 2009-12-15 17:52:07

1

您需要用分號結束您的類聲明。

class Counter 
{ 
private: 
int count; 
bool isCounted; 

public: 
Counter(); 
bool IsCountable(); 
void IncrementCount(); 
void DecrementCount(); 
int GetCount(); 
} ;