[C++] Wywołanie kaskadowe funkcji i argumenty

PAK
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 cze 2014, o 17:12
Płeć: Mężczyzna
Lokalizacja: Środkowa Polska
Podziękował: 118 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: PAK »

Zastanawiam się nad takim czymś : chciałbym żeby po wywołaniu funkcji z klasy ta uruchomiła inną funkcję z poza klasy i ta ostatnia pobrała adres obiektu na rzecz którego została wywołana pierwsza funkcja.Jak można by to zrealizować ? I mam pytanie jeszcze odnośnie tego, dlaczego przy przekazywaniu przez wartość i przez referencję jako argument podajemy w obu przypadkach podajemy nazwę, a nie np: w przekazywaniu przez referencję adres elementu.
Ostatnio zmieniony 3 paź 2015, o 18:51 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: Afish »

Jaki język, platforma, system, architektura?
Po co chcesz pobrać adres obiektu?
PAK
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 cze 2014, o 17:12
Płeć: Mężczyzna
Lokalizacja: Środkowa Polska
Podziękował: 118 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: PAK »

Ojej zapomniałem dodać w nazwie tematu tagów [C++].
Powiedzmy że chcę potraktować adres obiektu jako jego uniwersalną nazwę.Generalnie nie za bardzo wiem gdzie stosuje się wskaźnik this i wymyśliłem że może w takim przykładzie da się go zaaplikować.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: Afish »

Użycie this do rozróżniania obiektów jest okej, przy czym wyciąganie tego ze stosu jest słabym pomysłem. Po prostu przekaż ten wskaźnik do innej funkcji.

Jeżeli jednak chcesz się bawić w ręczne znalezienie wskaźnika, to nie ma na to uniwersalnej metody. C++ w założeniu ma działać na wielu architekturach, a historia wywołań funkcji jest bardzo ale to bardzo zależna od platformy. Wystarczy powiedzieć, że wcale nie musi istnieć stos (aczkolwiek nie znam żadnej architektury, gdzie takowego by nie było), ale nawet jeżeli istnieje, to jego zachowanie nie jest ustandaryzowane — już samo przekazywanie parametrów przez stos jest zależne od architektury, systemu operacyjnego, kompilatora, użytej w kodzie konwencji wywołania, optymalizacji i rodzaju funkcji. Dlatego ręczne przeglądnięcie stosu nie należy do łatwych zadań.
Linux daje następującą funkcję:
Windows zezwala na to: ... 50(v=vs.85).aspx
Są różne biblioteczki: http://www.codeproject.com/Articles/111 ... -callstack , https://github.com/orling/Poppy
PAK
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 cze 2014, o 17:12
Płeć: Mężczyzna
Lokalizacja: Środkowa Polska
Podziękował: 118 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: PAK »

Znaczy się tak.Ja nie wiedziałem do czego używa się wskaźnika this, a to jedyne zastosowanie które mi przyszło do głowy, które samo w sobie jest dla mnie ciekawe.Czy da się ten pomysł zrealizować bez this ?(a jeśli tak to w jaki sposób).I czy mógłbyś podać jakiś inny przykład zastosowania this ?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: Afish »

... _obiektowe)

http://www.learncpp.com/cpp-tutorial/87 ... s-pointer/
http://cpp0x.pl/kursy/Programowanie-obi ... k-this/492
Czy da się ten pomysł zrealizować bez this ?(a jeśli tak to w jaki sposób).
Chodzi o pobranie adresu obiektu na rzecz którego została wywołana wcześniejsza funkcja?
PAK
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 cze 2014, o 17:12
Płeć: Mężczyzna
Lokalizacja: Środkowa Polska
Podziękował: 118 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: PAK »

Afish pisze:Chodzi o pobranie adresu obiektu na rzecz którego została wywołana wcześniejsza funkcja?
Dokładnie
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: Afish »

Przecież podałem Ci metody przeglądnięcia stosu, jeżeli ich nie rozumiesz, to nie baw się w to. A jeżeli je rozumiesz, to wtedy ja nie rozumiem gdzie jest problem.
PAK
Użytkownik
Użytkownik
Posty: 185
Rejestracja: 11 cze 2014, o 17:12
Płeć: Mężczyzna
Lokalizacja: Środkowa Polska
Podziękował: 118 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: PAK »

A
PAK pisze: I mam pytanie jeszcze odnośnie tego, dlaczego przy przekazywaniu przez wartość i przez referencję jako argument podajemy w obu przypadkach podajemy nazwę, a nie np: w przekazywaniu przez referencję adres elementu.
?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wywołanie kaskadowe funkcji i argumenty

Post autor: Afish »

Tak definiuje to gramatyka języka, resztą zajmuje się kompilator. Tak samo można pytać dlaczego przy przekazywaniu tablicy wystarczy podać nazwę, a nie musimy podawać adresu pierwszego elementu — tak jest i już.
ODPOWIEDZ