适当利用朋友吗?设计用于操作特定类型对象的容器类

发布于 2024-09-10 06:25:26 字数 380 浏览 6 评论 0原文

假设您有一个 FooManager 来管理多个 Foo 类型的对象。 FooManager 需要查看其 Foo 的某些部分来评估其当前状态。在我使用 Foo 中的一些访问器来查看这些部分之前,直到我意识到 FooManager 是唯一实际使用这些部分的类。我决定让 FooManager 成为 Foo 的朋友。这导致 Foo 类的大部分变为私有。

这样使用朋友合适吗?我的理由是它有助于封装,因为虽然它允许 FooManager 完全访问 Foo 的内部结构,但它完全阻止了对其他所有内容的访问。

Lets say you have a FooManager made to manage multiple objects of type Foo. The FooManager needs to see some parts of its Foos to evaluate their current state. Before I was using a few accessors in Foo to see these parts, until I realized that FooManager is the only class actually using these. I decided to make FooManager a friend of Foo. This resulted in most of class Foo becoming private.

Is this an appropriate use of friend? My reasoning was that it helps encapsulation because while it gives FooManager complete access to Foo's internals, it completely blocks off access to everything else.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可可 2024-09-17 06:25:26

除非有一种不同的、更干净的方法来实现您想要实现的目标,否则这听起来像是一个公平的方法。

关于封装,请参见:http://www.parashift .com/c++-faq-lite/friends.html#faq-14.2

Unless there is a different and cleaner way to achieve what you're trying to achieve, this sounds like a fair approach.

With regards to encapsulation, see: http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文