【发布时间】:2013-02-11 22:33:19
【问题描述】:
通常在 C++ 中,当 A 类声明与 B 类的友谊时,B 类可以完全访问 A 类的私有成员。我需要做的是允许 B 类只访问 A 类的一个私有成员,而不能访问其他任何东西。有什么办法吗,也许是 C++11 中的新东西?
【问题讨论】:
-
将一个成员提取(声明)到它自己的类中,然后使该类成为
A的父类和B的friend? (虽然那时你可以只编码B来定位所说的接口类,而不需要友谊。) -
继承可以做到这一点,因为友谊不是继承的。但是,您应该首先尝试找到一个不依赖于友谊的解决方案,因为尝试使用继承来解决与朋友的问题最终会变得非常复杂。
-
一个getter/setter函数就足够了!!!!
-
问题是 getter 太“公开”了。好吧,看来我需要重新设计它。
-
在一个系统中(一组相关的类一起工作以提供一些功能)我觉得暴露私有是可以接受的。重要的是系统的用户(不是系统中任何一个特定类的用户)只能访问一个清晰的公共接口。
标签: c++ oop class c++11 friend