Klasa wewnętrzna uzyskująca dostęp do klasy zewnętrznej [duplikat]

To pytanie ma już tutaj odpowiedź:

Dostęp do klasy wewnętrznej do członków klasy zewnętrznej 5 odpowiedzi

Jestem stosunkowo nowy w C ++ i szukałem odpowiedzi na to pytanie, ale nigdy nie otrzymałem satysfakcjonującej odpowiedzi.

Powiedzmy, że mam strukturę o nazwieFSM. W końcu w moim kodzie, wiele instancjiFSM można utworzyć. Jeden zFSMatrybuty toint X co nie jest statyczne, każde wystąpienieFSM powinien mieć własną wartośćX.

Teraz jeden zFSMatrybuty to kolejna strukturasubmachine który musi odczytać wartośćX lubię to:

struct FSM
{
  public:
    int x;

    int getX(){return x;}

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

Daje to następujący błąd:

Błąd: „FSM :: getX”: niedozwolone wywołanie niestatycznej funkcji składowej

Moje pytanie brzmi,submachine jest członkiemFSM, więc nie powinien mieć dostępu do lokalnych instancji wszystkich atrybutówFSM? A jeśli nie, to kiedy tworzymy wystąpienieFSM, czy nie stworzylibyśmy instancji wszystkich jej członków, tj.submachine? A jeśli tak, to dlaczego musimy stworzyć obiekt, któryonentry() wymagania?

Zakładam, że kompilator jest poprawny, więc chciałbym również wiedzieć, czy istnieje sposób na wykonanie tej pracy.

UWAGA: Niestety, przypadki wewnętrznych struktur (submachine) są tworzone, gdy wywoływane jest zdarzenie i dlatego mogę tylko zdefiniować typ, a nie tworzyć dla nich instancji obiektówFSM.

questionAnswers(4)

yourAnswerToTheQuestion