2009-12-15 5 views
2

J'ai pris 2 classes COP OO, mais maintenant notre professeur passe en C++. Donc, pour vous habituer à C++, j'ai écrit ce programme très simple, mais je continue à obtenir cette erreur:Comment se débarrasser de cette erreur constructeur?

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

Je suis confus, parce que je crois que je l'ai mon code constructeur par défaut à droite.

Voici mon code pour la classe simple contre:

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; 
} 

Qu'est-ce que je fais mal? Je ne spécifie pas de type de retour. Ou suis-je en quelque sorte?

+1

S'il vous plaît lire sur les listes d'initialisation * *: http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=172 –

+0

D'accord, je le ferai. – Alex

+0

IsCountable peut être simplifié en 'return count == 0'. BTW, pourquoi avez-vous un membre 'isCounter' s'il n'est jamais lu (utilisé)? –

Répondre

14

Vous avez oublié le point-virgule à la fin de votre définition de classe. Sans le point-virgule, le compilateur pense que la classe que vous venez de définir est le type de retour pour le constructeur qui le suit dans le fichier source. C'est une erreur C++ commune à faire, mémoriser la solution, vous en aurez besoin à nouveau.

class Counter 
{ 
private: 
int count; 
bool isCounted; 

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

wow. C'était ça. En C++, vous avez besoin de points-virgules après vos définitions de classe? – Alex

+0

C'est là que GCC brille un peu - vous obtenez le diagnostic ": (il manque peut-être un point-virgule après la définition de 'Counter')" –

+0

@Alex Oui - juste comme vous en avez besoin après les définitions de struct dans C. –

1

Vous devez terminer votre déclaration de classe par un point-virgule.

class Counter 
{ 
private: 
int count; 
bool isCounted; 

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