Innere Klasse greift auf äußere Klasse zu [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Inner Class Zugang zu Outer Class Mitgliedern 5 AntwortenIch 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 vonFSM
Die Attribute von istint X
Das ist nicht statisch, jede Instanz vonFSM
sollte einen eigenen Wert für habenX
.
Nun, einer vonFSM
Die 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 vonFSM
Sollte 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
.