【问题标题】:Sharing private data and methods between classes在类之间共享私有数据和方法
【发布时间】:2013-12-09 11:25:15
【问题描述】:

我有一堆针对特定功能的类。只有一个类应该由用户代码实例化,因为其他类是“帮助”类。但是,这些帮助程序类确实公开了用户代码可以使用的有用信息。

所以我可以使用辅助类的构造函数,使其只能从主类访问。

同样,让方法和数据只能从适当的类访问,而不是从“用户代码”访问,这将很有用。

目前我想到的解决方案:

将一个特性的所有类放到一个文件中,并使用“静态”创建仅对该文件本地的变量。这会起作用,因为只有一个主类和所有“帮助”类的实例,但这似乎不是一个“好”的解决方案。

让“辅助类”成为主类的朋友。这也可行,但也会让主类访问辅助类中的所有私有数据,这并不理想。

从虚拟基类继承:认为这可能是最好的解决方案。通过“受保护”共享数据,私有数据保持私有,公开数据暴露。还没有在这个理论中打出任何漏洞。需要考虑性能方面,因为这是一个时钟速度为 72Mhz 的嵌入式系统。

【问题讨论】:

  • 我不是专家,但我认为考虑嵌入式系统中的虚拟功能,想要性能并不是一个好主意。

标签: c++ class


【解决方案1】:

使用构图

继承的类应该只继承功能而不是继承状态。受保护的成员/函数可能会将状态逻辑分为两个单元。我会说使用组合,并通过公共函数访问功能。

重新评价你的课程对你不认识的用户永远不会有好处,所以我想说不要限制自己。

【讨论】:

  • 所以基本上在主类的私有部分有辅助类,然后让主类通过公共方法代表用户访问它们?
  • 是的,这实际上是“正确”的设计。这样你仍然有封装,你没有限制自己,你没有冗余耦合。
猜你喜欢
  • 2018-03-25
  • 2012-01-30
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 2014-01-10
  • 2020-11-29
相关资源
最近更新 更多