Я создаю программу, которая включает родительский класс Account и производный класс BankAccount. Первоначально я должен установить баланс на счете равным 5000. И когда совершаются определенные транзакции, этот баланс должен быть обновлен. Кроме того, всякий раз, когда программа закрывается, программа должна возвращать последний баланс. Ниже мой код. Однако я не могу правильно инициализировать конструктор и, следовательно, начальный баланс никогда не устанавливается правильно. Пожалуйста, скажите мне, что я делаю не так.
class Account
{
public:void setCashBal(); //updates the cash balance in account whenever a transaction is made
double getCashBal(); //retrieves recent cash balanceprotected:
double cash_balance;
};void Account::setCashBal()
{
double initial_bal;ifstream read_cash_file("cash_bal_file.txt", ios_base::in);
int count = 0;
if (read_cash_file.is_open()) //check whether the file could be openend
{
while (!(read_cash_file.eof())) //reading until the end of file
{
count = count + 1;
break;
}
read_cash_file.close();
if (count == 0)//if the file is opened the first time, initial cash balance is 5000
{
initial_bal = 5000;
ofstream write_cash_file("cash_bal_file.txt", ios::out);write_cash_file << initial_bal; //writing the initial value of cash balance in cash_bal_file
write_cash_file.close();
read_cash_file.open("cash_bal_file.txt", ios_base::in);
read_cash_file >> cash_balance;
read_cash_file.close();
}else //getting the latest cash balance
{
read_cash_file.open("cash_bal_file.txt", ios::in);
read_cash_file >> cash_balance;
read_cash_file.close();
}
}
else //case when the file could not be openend
cout << endl << "Sorry, cash_bal_file could not be opened." << endl;
}
double Account::getCashBal()
{
return cash_balance;
}class BankAccount :public Account
{
public:
BankAccount();
void viewBalance();
};
BankAccount::BankAccount()
{
setCashBal();
cash_balance = getCashBal();
}void BankAccount::viewBalance()
{
double balance;
ifstream view_bal("cash_bal_file.txt", ios_base::in); //getting the latest cash_balance from cash_bal_file.
view_bal >> balance;cout << endl << "The balance in your bank account is " << balance << endl;
}int main()
{
BankAccount bnkObj;
bnkObj.viewBalance();
return 0;
}
class Account
{
public:
int n;
Account(): n(5000)
{}
};
Это называется «инициализация переменной-члена в конструкторе» или просто «инициализация». Если вы будете искать во вводном тексте C ++ слово «initialize», вы найдете что-то вроде этого.
Других решений пока нет …