Я полагаю, что полная ошибка связана с "Этими членами являются частные within context
" и некоторыми номерами строк.
Проблема в том, что i->strFirstName
является приватным с точки зрения функции reportAccounts()
. Лучшее решение может быть:
class Account{
private:
string strLastName;
string strFirstName;
int nID;
int nLines;
double lastBill;
public:
Account(string firstName, string lastName, int id);
string print() const
{
return printAccount(this->strLastName, this->strFirstName, this->nID,
this->nLines, this->lastBill);
}
};
А потом
string reportAccounts() const {
string report(printAccountsHeader());
for(list<Account>::const_iterator i = listOfAccounts.begin(); i != listOfAccounts.end(); ++i){
report += i->print();
}
return report;
}
Другой вариант - заставить printAccount
получить ссылку на Учетную запись (friend printAccount(const Account& account)
), а затем он может получить доступ к закрытым переменным через ссылку.
Тем не менее, тот факт, что функция называется print Account , говорит о том, что она может быть лучше как функция публичного класса.