Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przekazywanie obiektu/ów do funkcji

Ostatnio zmodyfikowano 2018-09-20 13:49
Autor Wiadomość
Wolfff
Temat założony przez niniejszego użytkownika
Przekazywanie obiektu/ów do funkcji
» 2018-09-19 23:28:15
Witam, mam funkcję w której modyfikuję zmienne mojego obiektu, jednak czasem muszę wyjść z tej funkcji, wykonać inne działania i następnie do niej wrócić.
Kiedy nie wychodzę wszystko jest kolorowo, jednak po wyjściu z niej i powróceniu mój obiekt jest tworzony na nowo we wspomnianej funkcji i cała robota od początku (oczywiście, w końcu obiekt jest tworzony na nowo).
Szukam sposobu żeby utrwalić te zmiany.
Mógłbym stworzyć ten obiekt w main i przekazywać go do funkcji jako wskaźnik czy referencję jednak jest to bardziej skomplikowane ponieważ operuję na tablicy obiektów więc musiałbym stworzyć tablicę wskaźników do obiektów(?) i wszystko się bardzo dla mnie komplikuje,
szczególnie zamiana całego kodu w mojej funkcji gdzie dostęp do zmiennych obiektu wyglądałby całkiem inaczej
(tak jak teraz wystarczy napisać vObj/.function(); żeby wykonać funkcję na danym obiekcie nr.: a, z wektora obiektów to wtedy ten i olbrzymią ilość zapisów musiałbym kompletnie zmienić, również używanie biblioteki SFML gdzie funkcje nie przyjmą wskaźników itp ogólnie wszystko się strasznie miesza).
Może stworzyć ten obiekt w pliku nagłówkowym dołączonym do wszystkiego innego, może obiekt globalny?
Nie rozumiem używania this, czy -> i tego podobnych rzeczy, jest to dla mnie ciężkie do ogarnięcia a zakładam że "zwykłe" przekazanie przez referencję by polegało na dużej ilości tej czarnej magii.
Dzięki wielkie za każdą sugestię (oprócz tych odsyłających mnie do douczenia się).
P-172361
pekfos
» 2018-09-19 23:51:43
Za mało informacji. Jeśli problem leży w samej koncepcji, nie unikniesz dużych zmian w kodzie.

Nie rozumiem używania this, czy -> i tego podobnych rzeczy, jest to dla mnie ciężkie do ogarnięcia a zakładam że "zwykłe" przekazanie przez referencję by polegało na dużej ilości tej czarnej magii.
Dzięki wielkie za każdą sugestię (oprócz tych odsyłających mnie do douczenia się).
Sugeruję, żebyś się douczył. "Nie rozumiem składni" to jeszcze gorszy argument niż "musiałbym dużo zmieniać w kodzie".
P-172364
Wolfff
Temat założony przez niniejszego użytkownika
» 2018-09-20 00:41:30
Nie jestem pewien czy opisanie tego jak to działa dużo pomoże ale się postaram.
W main jest pętla w której odpalana jest jedna z 2 funkcji (kiedy funkcja zwróci np 1 to odpala jedną funkcję a jak 2 to drugą).
W tej funkcji użytkownik daje swój input, dzieje się pełno rzeczy i używane oraz zmieniane są zmienne jednego z 4 obiektów, którego dokładnie zależy od ilości przebiegów pętli w funkcji.
Dlatego pełno rzeczy opiera się na używaniu funkcji danego obiektu przez (jak napisałem wcześniej) vObiektow[ a ].funkcja();, lub używanie zmiennych danego obiektu też np.: vObiektow[ a ].zmienna;.
Czasem użytkownik chce przejść do drugiej z głównych funkcji która nie ma wpływu na obiekty, jednak po powrocie obiekty są tworzone na nowo więc jakiekolwiek zmiany są jednorazowe.
Może mógłbyś pomóc ze sposobem przekazania wektora obiektów do pętli?
Albo chociaż pokierować gdzie mógłbym ogarnąć co zamienić na co kiedy pracuję na wskaźnikach/referencjach? Wszystko co czytałem bądź oglądałem było tak ogólne że w większym problemie się strasznie gubię.
(Czyli nie da się udostępnić tych obiektów przez dodanie pliku nagłówkowego z definicją do funkcji oraz main unikając wskaźników ale utrwalając zmiany?)
P-172365
Wolfff
Temat założony przez niniejszego użytkownika
» 2018-09-20 13:49:15
Problem rozwiązany bez żadnego drastycznego zmieniania kodu. Zrobiłem osobny plik .hpp w którym zadeklarowałem obiekty oraz ich kontener, w main.cpp umieściłem obiekty w wektorze i plik .hpp dodałem do funkcji oraz main.cpp.
Wszystko teraz działa tak jak powinno (chociaż wygląda chaotycznie).
P-172374
« 1 »
  Strona 1 z 1