Вот этот код:
#include
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;
}
Почему внутренний класс имеет доступ к данным закрытого члена 'a' класса Внешний? Следуя этой статье XL C / C ++ V8.0 для Linux , он не должен компилироваться, однако он компилируется на g ++ 4.4.0.