2009-12-07 4 views
1

Les états d'erreur:
"erreur: définition de classe en dehors virtuelle"erreur faisant C++ fonctions virtuelles

membres Cpp en question:

virtual void Account::creditBalance(double plus) 
{ 
    if(plus > 0) 
     balance += plus; 
    else 
     cout << "Cannot credit negative."; 
} 

virtual void Account::debitBalance(double minus) 
{ 
    if(minus <= balance) 
     balance -= minus; 
    else 
     cout << "Debit amount exceeded account balance."; 
} 

Le reste du code est ici (bien que je suis pas sûr que c'est nécessaire): http://pastebin.com/de5e9f77

+0

Merci à tous, je ne Je ne sais pas pourquoi je n'ai pas compris cela en lisant le message d'erreur. –

Répondre

13

Il suffit de retirer le virtuel de la définition de la méthode. Le mot-clé virtual n'est nécessaire que lors de la déclaration.

Exemple:

class Account { 
public: 
    virtual void creditBalance(double); 
    virtual void debitBalance(double); 
}; 

void Account::creditBalance(double plus) 
{ 
    if(plus > 0) 
     balance += plus; 
    else 
     cout << "Cannot credit negative."; 
} 

void Account::debitBalance(double minus) 
{ 
    if(minus <= balance) 
     balance -= minus; 
    else 
     cout << "Debit amount exceeded account balance."; 
} 
3

Vous avez seulement besoin d'utiliser le mot-clé virtuel dans la déclaration de classe, à savoir dans le fichier d'en-tête. Donc changer votre fichier cpp à quelque chose comme:

void Account::creditBalance(double plus) 
{ 
    if(plus > 0) 
     balance += plus; 
    else 
     cout << "Cannot credit negative."; 
} 

void Account::debitBalance(double minus) 
{ 
    if(minus <= balance) 
     balance -= minus; 
    else 
     cout << "Debit amount exceeded account balance."; 
} 
1

Utilisez le mot-clé virtuel que dans decleration (dans les fichiers d'en-tête, dans la définition de la classe) et non pas dans la mise en œuvre (fichiers .cc généralement)

Questions connexes