【发布时间】:2011-01-13 12:26:22
【问题描述】:
我在 C++ 中有一个嵌套类,它必须是公共的。但我需要它的一些方法对外部世界可见,其余的仅对嵌套类可见。那就是:
class set {
public:
class iterator {
innerMethod();
public:
outerMethod();
}
}
我希望能够为 set 编写一个使用 innerMethod() 的方法。如果我把它公开,我也可以从外部访问它,这是我绝对不想要的。有没有办法在不做“朋友类设置”的情况下做到这一点?
提前致谢!
【问题讨论】:
-
为什么不想使用
friend声明? -
不太清楚为什么用引号将其称为“朋友类集”。需要说明的是,您可以像使用
public一样使用friend,这似乎不会打扰您。 -
这正是
friend声明改进封装的那种情况,因为显而易见的替代方案是完全打破封装。 -
也许在这种情况下,这与朋友或不是朋友无关。也许你的设计不好。请不要重新实现集合。 STL 库已经提供了一个。
-
@ ds27680 - 我需要在课堂上实现它。在现实生活中,如果我在 STL 库中有我自己的 Set 类,我绝不会编写它。
标签: c++ friend nested-class friend-class