Se modificó el modificador privado de C ++ en una estructura anónima anidada
El siguiente código de ejemplo se compila bien en Visual C ++:
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
¿Pero por qué? Yo esperaría un error de compilador porque elprivateData
miembro debe ser inaccesible a la función principal, ya que se supone que esprivate
como el contenedor de su contenedor. Sé que las estructuras sin nombre no forman parte de C ++ oficial, pero este diseño es original.
Por cierto también he intentado cambiarprivate
dentroprotected
ystruct
dentrounion
: parece que el compilador se niega a respetar los modificadores de acceso en estructuras anónimas y uniones que están anidadas dentro de otra estructura anónima o unión.
¿Alguien puede explicar esta característica?