我正在尝试使用QT框架获取存储在QList中的帐户列表的总余额。
我的问题是,总余额需要从我不允许这样做的类中访问受保护的成员余额。
这个问题来自大学的分配,这个问题已经给了我程序的UML,并且成员变量余额没有getter函数。
我的问题是,有什么方法可以在不使用getter函数的情况下从QList访问平衡
我尝试添加新的类指针类型,尝试直接访问它,并尝试创建一个新类,并使用赋值构造函数分配传递给它的相关类
class AccountList: public QList<Account*>
{
public:
~AccountList();
bool addAccount(Account* a);
double totalBalance();
void doInterestCalculations();
QString toString() const;
QStringList customersWithHighestPoints() const;
private:
Account* findAccount() const;
};
class Account
{
public:
Account(QString cn, QString an, double ir, QString ty);
Account(const Account & x);
Account& operator=(const Account& x);
QString getCustName() const;
QString getAccNum() const;
QList<Transaction> getTransaction() const;
QString toString() const;
QString getType() const;
double getInterestRate() const;
virtual void transaction(double amt0) = 0;
virtual void calcInterest() = 0;
protected:
double balance;
QList<Transaction> transactions;
private:
QString custName;
QString accNum;
double interestRate;
QString type;
};
double AccountList::totalBalance()
{
double totalOfBalances = 0;
for(int i = 0; i < this->size(); i++)
{
totalOfBalances+= at(i)->balance;
}
return totalOfBalances;
}
在QUAL Creators IDE中,我的错误是“ totalOfBalances + = at(i)-> balance;”上下文中的“ double Account :: balance'受保护”
答案 0 :(得分:2)
我真的不明白为什么您不能为此protected
数据成员添加吸气剂。
但是,如果您真的不想添加它,可以按照 @Botje 的建议进行操作。将AccountList
声明为friend
中的Account
。这样,AccountList
将能够访问private
的{{1}}和protected
成员。
如果您不知道该怎么做,请在Account
的声明中添加friend class AccountList;
(假设Account
是已知的,如果不知道,请向前声明)。 / p>