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

[C++, SFML] Zwracanie sf::Packet w metodzie 'get' klasy

Ostatnio zmodyfikowano 2014-06-07 23:10
Autor Wiadomość
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?

C/C++
* sf::Packet packet;
packet << "MAP" << jakies_zmienne;
C/C++
** if( search_string( get_last_type_packet(), "MAP" ) )
{ /*Odpowiednie operacje, jesli ostatni odebrany pakiet byl typu "MAP"*/ }
P-111355
Psiryj
» 2014-06-03 17:35:39
musisz odpowiednio przeladowac operatory
P-111364
DejaVu
» 2014-06-04 00:46:19
hę? Jakie operatory? Trzeba po prostu zapisać na pierwszym bajcie typ pakietu aby wiedzieć jak go zinterpretować.
P-111395
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'.
P-111404
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.
P-111420
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...
P-111430
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.

C/C++
class manager {
    sf::Packet packet_receive;
   
    //...
   
    void receive_packet(); //tutaj odbieram dane, którze przechowuję w pakiecie 'packet_receive';
    inline sf::Packet get_Packet_Reveive(); //a tutaj chcę zwrócić ten pakiet. Niestety jego zawartość już jest pusta, bo znika przy wyjściu z funkcji receive_packet().
}
P-111527
pekfos
» 2014-06-05 21:22:49
Przez referencję?
P-111529
« 1 » 2 3
  Strona 1 z 3 Następna strona