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 odpowiedziJestem 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 zFSM
atrybuty toint X
co nie jest statyczne, każde wystąpienieFSM
powinien mieć własną wartośćX
.
Teraz jeden zFSM
atrybuty 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
.