2009-12-07 2 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

모두에게 감사를 I 돈 왜 내가 오류 메시지를 읽음으로써 그 점을 이해하지 못했는지 알 수 없습니다. –

답변

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 일반적으로 파일)