Acceso de miembro de clase anidado en C ++ 11
En C ++ 11, estoy tratando de acceder a una variable miembro de una clase adjunta desde una clase anidada de la siguiente manera:
struct Enclosing {
int a;
struct Nested {
int f() {
return a;
}
};
};
Incluso esto no se compila usando g ++ 4.7.2 con -std = c ++ 11, produciendo mensajes de error de esta forma:
error: invalid use of non-static data member 'Enclosing::a'
Por lo que yo entiendo, C ++ 11 trata a una clase anidada como un miembro de la clase, de modo que supuestamente una clase anidada puede acceder a todos los demás miembros de la clase adjunta. ¿Hice algo mal? Gracias por adelantado.
Actualizar:
Si bien mi pregunta parece tener una respuesta a continuación, no estoy convencido de que esto se marque como duplicado.
Soy consciente de las discusiones sobre la relación entre las clases anidadas y las clases adjuntas antes del estándar C ++ 11, después de muchas búsquedas antes de publicar una pregunta.
Las discusiones relevantes anteriores como esta citan algunas "actualizaciones" en C ++ 11, p.Accesibilidad a clases anidadas en C ++
Pero no estaba muy claro, al menos según las respuestas que leí, en toda su extensión que C ++ 11 es "diferente" de las versiones anteriores en este asunto.
Técnicamente, la solución a mi pregunta existe en hilos más antiguos comoMiembros anidados de la clase 'acceso a los datos privados de la clase adjunta', un hecho que tenía que ser señalado, por tonto que me parezca. Pero no encontré ninguna respuesta que ponga C ++ 11 en contexto; al menos, no creo que mi pregunta pueda considerarse justamente un "duplicado" de una pregunta hecha antes del estándar C ++ 11.