Dostęp z zagnieżdżonej struktry do zewnętrznej

0

Mam strukturę typu S1 posiadającą zmienną i zagnieżdżoną strukturę wewnętrzna typu S2. Chciałbym uzyskać dostęp z zagnieżdżonej struktury do zmiennej w strukturze zewnętrznej. Przykładowo:

 struct S1{
	struct S2 {
		void wyswietl();
	} wewnetrzna;
	int zmienna;
};

I teraz pytanie: jak napisać definicję funkcji wyswietl(), żeby wyświetlała int zmienna?
Doszedłem do

void S1::S2::wyswietl()
{
	//cout<< ???; Jak się odnieść do int zmienna?
 	return;
}

Dziękuję

0

Nie da się bezpośrednio, nie ma niejawnego powiązania pomiędzy instancji.

0
#include <iostream>
using namespace std;

struct S1{
        struct S2 {
                void wyswietl();
        } wewnetrzna;
        int zmienna;
};

void S1::S2::wyswietl()
{
   cout << ((S1*)this)->zmienna << endl;
}

int main()
{
  S1 zewnetrzna;
  zewnetrzna.zmienna = 123;
  zewnetrzna.wewnetrzna.wyswietl();
}

Aaaaale, to BARDZO brzydkie rozwiązanie, i polega na tym, że wewnetrzna jest pierwszym od góry polem klasy S1 — zatem wskaźnik na to pole jest tym samym co wskaźnik na zmienną zewnetrzna.

0

Dzięki za szybką odpowiedź, rzeczywiście nie pomyślałem o tym, że egzemplarz struktury nie zawsze musi wiedzieć wewnątrz czego się znajduje i jej wewnętrzne funkcje nie mogą przyjmować jako argumentu domyślnego adresu zewnętrznej struktury.
A pomysł Azariena bardzo sprytny :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1