Innere Klasse greift auf äußere Klasse zu [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Inner Class Zugang zu Outer Class Mitgliedern 5 Antworten

Ich bin relativ neu in C ++ und habe viel nach einer Antwort für diese Sache gesucht, aber ich habe nie eine befriedigende Antwort bekommen.

Nehmen wir an, ich habe eine Struktur namensFSM. Irgendwann in meinem Code mehrere Instanzen vonFSM erstellt werden kann. Einer vonFSMDie Attribute von istint X Das ist nicht statisch, jede Instanz vonFSM sollte einen eigenen Wert für habenX.

Nun, einer vonFSMDie Attribute von sind eine andere Struktursubmachine die den Wert von lesen mussX so was:

struct FSM
{
  public:
    int x;

    int getX(){return x;}

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

Dies gibt den folgenden Fehler:

Fehler: 'FSM :: getX': Unzulässiger Aufruf der nicht statischen Member-Funktion

Meine Frage ist,submachine ist ein Mitglied vonFSMSollte es nicht Zugriff auf lokale Instanzen aller Attribute von haben?FSM? Und wenn nicht, wenn wir eine Instanz von erstellenFSM, würden wir nicht eine Instanz aller ihrer Mitglieder erstellen, d. h.submachine? Und wenn ja, warum müssen wir dann ein Objekt erstellen, dasonentry() braucht?

Ich gehe davon aus, dass der Compiler korrekt ist, also würde ich auch gerne wissen, ob es eine Möglichkeit gibt, dies zum Laufen zu bringen.

HINWEIS: Leider sind die Instanzen der inneren Strukturen (submachine) werden instanziiert, wenn ein Ereignis aufgerufen wird, und daher kann ich nur den Typ definieren und keine Objekte für sie instanziierenFSM.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage