如果我在C++中定义一个内部类,它会自动成为包含它的类的朋友吗?例如,这是否合法:
class Outer {
public:
class Inner {
public:
void mutateOuter(Outer& o);
};
private:
int value;
};
void Outer::Inner::mutateOuter(Outer& o) {
o.value ++; // Legal? Or not?
}
我之所以这样问,是因为在我尝试过的一些编译器(VS2003)上,这段代码不能工作,但我至少听说过它可以在一些编译器上工作。我在C++规范中找不到关于这一点的相关部分,如果有人能引用一些具体的东西来说明它是合法的还是不合法的,那就太好了。
发布于 2011-02-16 15:40:35
我不知道确切的位置,但我记得通过阅读规范,发现类中的任何私有数据对所有其他类都是隐藏的,包括嵌套类。
基本上,嵌套类定义了某个范围,而不是访问权限。
https://stackoverflow.com/questions/5013717
复制相似问题