有以下代码:
#include <iostream>
class Outer{
int a; // private data member of class Outer
public:
Outer(): a(55){}
class Inner{
public:
void fun(Outer ob){
std::cout << ob.a << std::endl;
}
};
};
int main() {
Outer::Inner object;
object.fun(Outer()); // prints 55
//std::cout << (Outer().a) << std::endl; error: 'int Outer::a' is private
return 0;
}
为什么内部类可以访问外部类的私有(private)成员数据“a”?在本文XL C/C++ V8.0 for Linux之后,它不应该编译,但是可以在g++ 4.4.0上编译。
最佳答案
根据该文档XL C/C++ V8.0不支持C++ 11,请参阅“符合语言标准”一节。
当前标准表示(ISO/IEC 14882:2011 11.7):
在以前的语言标准中,是否允许这种访问,或者至少不清楚是否应该允许这种访问,具体取决于您的解释。
关于c++ - 访问内部类中外部类的私有(private)成员数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8869907/