首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何访问私有类列表?

如何访问私有类列表?
EN

Stack Overflow用户
提问于 2011-11-10 01:02:11
回答 4查看 1.3K关注 0票数 0

我不知道这个解决方案...

例如,我的代码是,

代码语言:javascript
运行
复制
class Bank
{
 private :
  list < Client*> clientList;

}

class Client
{
private :
 list< Account*> accountList;

}

class account
{
private 
 list< string> statement;

}

哦,我想在bank类中访问对账单!我想怎么访问它的.

1)在客户端类中使用list< Account*> getAccountList()方法,在Account中使用list<string> getStatement()方法。

但是为什么列表是私有的呢?嗯,还可以公开吗?

2)制作列表访问方式(嗯,比如pop和push?)在所有班级中..

我得了2分,但太糟糕了。我有很多事情要做,并且重复类似的功能...

最好的方法是什么?这是我永远不知道的方式吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-10 02:35:50

最好的解决方案是让每个类中的访问器方法返回对列表的常量引用:

代码语言:javascript
运行
复制
class Account
{
   private:
      list<string> statements;

   public:
      const list<string>& getStatements() const
      {
         return statements;
      }
};

这比public要好,因为返回的列表引用是不可修改的。

可以有返回const_iterator的方法,但每个类都必须有返回beginend和任何其他可能需要的列表操作的方法。

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 01:06:06

通常你不应该访问你的类的私有成员,这是基本的面向对象的概念。但是,如果你想拥有列表的只读访问权限,只需返回它的const引用,如下所示:

代码语言:javascript
运行
复制
const list<Client*>& getList()const{
  return clientList;
}
票数 0
EN

Stack Overflow用户

发布于 2011-11-10 01:09:39

正如前面提到的,您也可以将迭代器返回到列表的开头和结尾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8068649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档