Wątek w klasie
Ostatnio zmodyfikowano 2016-10-11 12:55
sebox Temat założony przez niniejszego użytkownika |
Wątek w klasie » 2016-10-08 11:20:22 Mam klasę w pliku client.h class Client { private: std::string name; sf::TcpSocket me; public: Client( const std::string & name ); ~Client(); void wysylanie( Client client ); sf::Socket::Status connect( const sf::IpAddress & IP, unsigned short port ); sf::Socket::Status send( PacketType type, const std::string & msg ); sf::Socket::Status receive( std::string & msg );
W pliku client.cpp mam metodę void Client::wysylanie( Client client ) { while( 1 ) { string s; getline( std::cin, s ); client.send( GENERAL_MSG, s ); } }
I chciałbym zrobić sobie z tej metody osobny wątek, próbowałem w taki sposób: Client client( name ); Thread thread( & Client::wysylanie, client ); thread.launch();
I dostaję błąd: Error 1 error C2064: term does not evaluate to a function taking 1 arguments
Ktoś coś podpowie jak to powinienem zrobić?? :) |
|
pekfos |
» 2016-10-08 12:26:41 Użyj std::thread. |
|
sebox Temat założony przez niniejszego użytkownika |
» 2016-10-08 14:02:21 Zrobiłem tak i jakiś dziwny błąd mam teraz: std::thread t( & Client::wysylanie, Client( name ) );
Error 1 error C2248: 'sf::NonCopyable::NonCopyable' : cannot access private member declared in class 'sf::NonCopyable'
|
|
pekfos |
» 2016-10-08 22:14:25 Nie możesz kopiować Client. |
|
Gibas11 |
» 2016-10-08 23:08:42 Uściślając chodzi o sf::TcpSocket, przechowuj w klasie wskaźnik na ten obiekt to będziesz mógł ją normalnie kopiować. |
|
pekfos |
» 2016-10-11 12:55:24 To nie jest poprawne rozwiązanie. Do wątku należy przekazać wskaźnik na obiekt, a nie sam obiekt. |
|
« 1 » |