Classe interna acessando a classe externa [duplicada]

Esta questão já tem uma resposta aqui:

Acesso da Classe Interna aos membros da Classe Externa 5 respostas

Sou relativamente novo no C ++, e procurei muito por uma resposta para essa coisa, mas nunca obtive uma resposta satisfatória.

Digamos que eu tenha uma estrutura chamadaFSM. Eventualmente no meu código, várias instâncias deFSM pode ser criado. Um deFSMatributos de s éint X que não é estático, cada instância deFSM deve ter seu próprio valor paraX.

Agora, um dosFSMAtributos é outra estruturasubmachine que precisa ler o valor deX como isso:

struct FSM
{
  public:
    int x;

    int getX(){return x;}

    struct submachine
    {
        void onentry() {int g = getX();};
    };
};

Isso dá o seguinte erro:

Erro: 'FSM :: getX': chamada ilegal da função de membro não estático

Minha pergunta é,submachine é um membro deFSM, então não deveria ter acesso a instâncias locais de todos os atributos deFSM? E se não, quando criamos uma instância deFSM, não estaríamos criando uma instância de todos os seus membros, ou seja,submachine? E se sim, então por que precisamos criar um objeto queonentry() necessidades?

Eu estou supondo que o compilador está correto, então eu também gostaria de saber se há uma maneira de fazer isso funcionar.

NOTA: Infelizmente, as instâncias das estruturas internas (submachine) são instanciados quando um evento é chamado e, portanto, só posso definir o tipo e não instanciar objetos para eles emFSM.

questionAnswers(4)

yourAnswerToTheQuestion