gpt4 book ai didi

c++ - 从类的 QList 访问 protected 成员,例如 QList

转载 作者:行者123 更新时间:2023-11-28 01:18:11 24 4
gpt4 key购买 nike

我正在尝试使用 QT 框架获取存储在 QList 中的帐户列表的总余额。

我的问题是总余额需要从不允许我这样做的类中访问 protected 成员余额。

这个问题来自大学的作业,问题已经给了我程序的 UML,并且没有成员变量 balance 的 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;
}

我使用 QT Creators IDE 的错误是在“totalOfBalances+= at(i)->balance;”上下文中出现“double Account::balance' is protected”

最佳答案

我真的不明白为什么你不能为这个 protected 数据成员添加 getter。

但是如果你真的不想添加它,你可以按照@Botje的建议去做。将 AccountList 声明为 Accountfriend。这样,AccountList 将能够访问 Accountprivateprotected 成员。

如果不知道怎么做,在Account的声明中添加friend class AccountList;(假设AccountList已经已知,如果不知道,请转发声明)。

关于c++ - 从类的 QList 访问 protected 成员,例如 QList<Account*>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57901638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com