如果我在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 ++规范中相关的部分,如果有人能引用具体内容来说明它是否合法,那就太好了。