2009-12-07 67 views
1

的錯誤狀態:
「錯誤:虛擬課外定義」錯誤使得C++函數虛擬

.cpp的成員問題:

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

的代碼的其餘部分是在這裏(雖然我不知道是否有必要):http://pastebin.com/de5e9f77

+0

謝謝大家,我不不知道爲什麼我沒有通過閱讀錯誤信息來解決這個問題。 – 2009-12-07 19:42:10

回答

13

只需從方法定義中去除虛擬。 virtual關鍵字只在聲明時需要。

實施例:

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

你只需要使用虛擬關鍵字類聲明,即內部在頭文件。因此,改變你的CPP文件是這樣的:

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

使用虛擬關鍵字僅在decleration(在頭文件,類定義中),而不是在實現(通常的.cc文件)