Clase interna que accede a la clase externa [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Acceso de la clase interna a los miembros de la clase externa 5 respuestasSoy relativamente nuevo en C ++, y he buscado mucho por una respuesta para esto, pero nunca obtuve una respuesta satisfactoria.
Digamos que tengo una estructura llamadaFSM
. Eventualmente en mi código, múltiples instancias deFSM
se puede crear. Uno deFSM
los atributos de esint X
Lo cual no es estático, cada instancia deFSM
debe tener su propio valor paraX
.
Ahora, uno deFSM
Los atributos de es otra estructura.submachine
que necesita leer el valor deX
Me gusta esto:
struct FSM
{
public:
int x;
int getX(){return x;}
struct submachine
{
void onentry() {int g = getX();};
};
};
Esto da el siguiente error:
Error: 'FSM :: getX': llamada ilegal de función miembro no estática
Mi pregunta es,submachine
es miembro deFSM
, por lo que no debería tener acceso a instancias locales de todos los atributos deFSM
? Y si no, cuando creamos una instancia deFSM
, ¿no estaríamos creando una instancia de todos sus miembros, es decir,submachine
? Y si es así, entonces ¿por qué necesitamos crear un objeto queonentry()
¿necesariamente?
Asumo que el compilador es correcto, por lo que también me gustaría saber si hay una manera de hacer que esto funcione.
NOTA: Desafortunadamente, las instancias de las estructuras internas (submachine
) se crean instancias cuando se llama a un evento y, por lo tanto, solo puedo definir el tipo y no instanciar objetos para ellos enFSM
.