假设您制作了一个FooManager
来管理Foo
类型的多个对象。 FooManager
需要查看其Foo
的某些部分以评估其当前状态。在我使用Foo
中的一些访问器查看这些部分之前,直到我意识到FooManager
是实际使用它们的唯一类。我决定让FooManager
成为Foo
的 friend 。这导致大多数Foo
类变为私有(private)的。
这是对 friend 的适当使用吗?我的理由是它有助于封装,因为尽管它使FooManager
可以完全访问Foo
的内部结构,但它完全阻止了对其他所有内容的访问。
最佳答案
除非有其他更清洁的方法来实现您要实现的目标,否则这听起来像是一种公平的方法。
关于封装,请参见:http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2。