Wskaźnik na obiekt z którego wywołano metodę

0

Czy w C++ istnieje możliwość pobrania w metodzie która została wywołana wskaźnika na obiekt z którego została wywołana. Troszkę źle to brzmi, ale podaje przykład:

Niech będą klasy "X", "Y" oraz niech "Y" zawiera metodę "m".

W konstruktorze klasy "X"
Tworze obiekt:
Y *y = new Y;

wywołuje metode:
y->m();

i teraz w metodzie "m" chciałbym pobrać wskaźnik na ten obiekt z którego została wywołana ta metoda, czyli w tym przypadku "X" bo utworzyliśmy obiekt w konstruktorze klasy "X" i tam też wywołaliśmy metodę "m". Czy istnieje taka możliwość ?

1

Automatycznie? Nie. Jeśli potrzebujesz powiazania w drugą stronę to musisz je samodzielnie utworzyć (tzn obiekt Y musi mieć wskaźnik na rodzica)

0

Szkoda znacznie ułatwiłoby mi to sprawę, ale dziękuje za odpowiedź.

0

Nie zniechęcaj się... przecież to tak proste...

void m(X* This); // ta metoda z parameterm do obiektu X

y->m(this); // przkeazujesz this rodzica podczas wywołania i masz...
0

Dzięki nobody__ utworzyłem w klasie abstrakcyjnej wskaźnik na "samą siebie" a w konstruktorach klas pochodnych zastosowałem to co napisałeś i dostałem w efekcie to co chciałem :)

1
n0name_l, w komentarzu napisał(a)

w C++ nie trzeba tworzyc wskaznika na "sama siebie" bo juz taki istnieje odgornie, tzn. po przejsciu przez liste inicjalizacyjna konstruktora
Nie zupełnie, przed listą również już ma ten wskaźnik:

class Foo
  {
   public:
   int x;
   int &i;   
   Foo():x(ini()),i(x) { cout<<"po liscie: this="<<this<<"; &i="<<&i<<';'<<endl; }
   int ini() { cout<<"przed lista: this="<<this<<"; &i="<<&i<<';'<<endl; return 0; }
  };

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