我不知道这个解决方案......
例如,我的代码是,
class Bank
{
private :
list < Client*> clientList;
}
class Client
{
private :
list< Account*> accountList;
}
class account
{
private
list< string> statement;
}
哦,我想访问银行类的声明!我想如何访问它...
1)在客户端类中创建list< Account*> getAccountList()
方法,在帐户中创建list<string> getStatement()
方法。
但为什么列表是私有的?嗯,还可以公开吗?
2)在All Class中制作列表访问方法(例如,pop和push?)..
我得到了2.但是太可怕了。我有很多事要做,并且重复了类似的功能...最好的方法是什么?这是我永远不知道的方式?
答案 0 :(得分:1)
最好的解决方案是在每个类中使用访问器方法返回对列表的const引用:
class Account
{
private:
list<string> statements;
public:
const list<string>& getStatements() const
{
return statements;
}
};
这比public更好,因为返回的列表引用不可修改。
您可以让方法返回const_iterator,但是每个类都必须有返回begin
,end
的方法,以及您希望可能需要的任何其他列表操作。
答案 1 :(得分:0)
通常你不应该访问你班级的私人成员这是基本的OO概念。但是如果你想要对列表进行只读访问,只需返回它的const引用,如:
const list<Client*>& getList()const{
return clientList;
}
答案 2 :(得分:0)
正如其他人提到的那样,您可以将迭代器返回到列表的开头和结尾。
答案 3 :(得分:0)
作业?
假设您的程序包含20个可以访问您的Bank类的类,不同的程序员编写了这些类。
然后你发现一个银行对象没有它应该具有的列表中的客户端。
发现原因可能需要了解所有类,看看其中一个是否修改了Bank.clientlist(可能是错误的)。
这是封装对客户列表的访问的原因之一。封装还有其他原因,也有一些原因不利于它们。
卡斯帕