В приведенном ниже коде (для учетной записи. cpp file) я получаю сообщение об ошибке Переопределение «numberAccounts» и Переопределение «Account», et c для всех членов класса. Я не могу найти проблему.
//Account.h
#ifndef Account_h
#define Account_h
#include "Date.cpp"
struct Transaction
{
Date date;
int transactionType; // 0, 1, 2 for account creation,
// deposit and withdrawal respectively
double amount;
};
class Account{
private:
int accountNumber;
string ownerName;
protected:
double balance;
static int numberAccounts;
Transaction transactionHistory;
int numberTransactions;
public:
Account(string ownerName_, double balance_, Date date_);
virtual bool withdraw(double amount, Date date_);
bool deposit(double amount, Date date_);
int getAccountNumber() const ;
double getBalance() const ;
static int getNumberAccounts();
virtual void print() const;
};
#endif /* Account_h */
//Account.cpp
#include <iostream>
#include "Account.h"
using namespace std;
const int numberAccounts = 1000;
Account::Account(string ownerName_, double balance_, Date date_){
ownerName = ownerName_;
balance = balance_;
accountNumber = (numberAccounts+1000);
numberAccounts++;
}
bool Account::withdraw(double amount, Date date_){
if(balance >= amount){
balance -= amount;
return true;
}else{
return false;
}
}
bool Account::deposit(double amount, Date date_){
if(amount > 0){
balance += amount;
return true;
}else{
return false;
}
}
int Account::getAccountNumber() const {
return accountNumber;
}
double Account::getBalance() const {
return balance;
}
int Account::getNumberAccounts(){
return numberAccounts;
}
void Account::print() const{
cout << "#: " << accountNumber << ", Name:" << ownerName << ", Balance: "
<< balance << " Galactic units" << endl;
}
После каждого определения в файле Account. cpp возникает ошибка, называемая переопределением ____. Как это исправить? Я уже поместил ifndef / define / endif в заголовочный файл.