5
C ++中的内部类是否自动成为朋友?
如果我在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 ++规范中找到与此相关的部分,并且如果有人可以引用某些特定的东西,那就说这是合法的或不合法的,那将是很好的。