No es este código:acceso a los datos privados de los miembros de la clase externa en la clase interna
#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;
}
qué clase interna tiene acceso a los datos de los miembros privados 'a' de la clase externa? Siguiendo este artículo XL C/C++ V8.0 for Linux, no debería compilarse, sin embargo se compila en g ++ 4.4.0.
No, ese artículo también dice que la clase interna no tiene acceso a la clase adjunta. Pero tienes razón de que es perfectamente válido. – hvd
@hvd: creo que tienes razón, editado. Tuve que volver a leerlo un par de veces porque parece un poco confuso. –
De hecho, es perfectamente válido, pero (presumiblemente cuando IBM escribió su documentación y compilador) no era válido originalmente: se hizo válido por http://www.open-std.org/JTC1/SC22/WG21/docs /cwg_defects.html#45 – hvd