Rughailon Temat założony przez niniejszego użytkownika |
[C++, SFML] Zwracanie sf::Packet w metodzie 'get' klasy » 2014-06-03 16:27:47 To znowu ja. Kodząc mój projekt natrafiłem na dość nieprzyjemną sytuację. Na początek przybliżę wam, co dokładnie zrobiłem. Utworzyłem sobie klasę managera, który odbiera i wysyła pakiety, które zawsze oznaczam odpowiednim typem*, aby po odebraniu metoda receive zapisała mi ich typ do zmiennej string 'last_type_packet'**, którą zwracam odpowiednią metodą. Jeśli w następnej pętli nie odbiorę żadnego pakietu, to usuwam stary zapisany pakiet i dodaję do odpowiednich miejsc tekst "Nothing Package". Jednak mam problem z sf::Packet. Chcę, aby to również mi zapisało swoją zawartość(już bez typu), abym potem mógł ją pobrać do zmiennych za pomocą odpowiedniej metody. Jednak sf::Packet najwidoczniej zapamiętuje zawartość tylko w metodzie odbierającej pakiety, a wtedy nie wiem jeszcze, jakie wartości muszę wyciągnąć z niej. Tak więc czy istnieje jakiś sposób, aby sf::Packet zapamiętało zawartość dopóki jej nie zapiszę do zmiennych? * sf::Packet packet; packet << "MAP" << jakies_zmienne; ** if( search_string( get_last_type_packet(), "MAP" ) ) { } |
|
Psiryj |
» 2014-06-03 17:35:39 musisz odpowiednio przeladowac operatory |
|
DejaVu |
» 2014-06-04 00:46:19 hę? Jakie operatory? Trzeba po prostu zapisać na pierwszym bajcie typ pakietu aby wiedzieć jak go zinterpretować. |
|
Rughailon Temat założony przez niniejszego użytkownika |
» 2014-06-04 14:35:26 Z typem pakietu nie mam problemu. Chcę jedynie dowiedzieć się, jak zrobić, aby pakiet (z klasy managera) posiadał swoją zawartość nie tylko w metodzie receive_packet, ale abym mógł ją potem zwrócić też odpowiednią metodą 'get'. |
|
pekfos |
» 2014-06-04 18:32:25 Jednak sf::Packet najwidoczniej zapamiętuje zawartość tylko w metodzie odbierającej pakiety, a wtedy nie wiem jeszcze, jakie wartości muszę wyciągnąć z niej. |
No fajnie, ale jak mamy to niby zdiagnozować? Nie podałeś żadnego z tym związanego kodu, a jakieś 90% opisu problemu to bezużyteczna historyjka w tle. |
|
DejaVu |
» 2014-06-04 19:53:02 No ale dostałeś informację jak to zrobić. Przy zapisywaniu dodaj jako pierwszy bajt typ przesyłanych danych, a przy odbiorze pakietu odczytaj od razu pierwszy bajt aby wiedzieć jak interpretować dane, które zostały przesłane przez sieć. To jest cała filozofia... |
|
Rughailon Temat założony przez niniejszego użytkownika |
» 2014-06-05 21:17:04 Nie rozumiecie mnie... Ja chcę się dowiedzieć, jak sf::Packet w klasie managera zwrócić w metodzie 'get' zwykłym returnem, bo jego zawartość jest widoczna tylko w metodzie odbierającej dane. class manager { sf::Packet packet_receive; void receive_packet(); inline sf::Packet get_Packet_Reveive(); } |
|
pekfos |
» 2014-06-05 21:22:49 Przez referencję? |
|
« 1 » 2 3 |