pthreads Thread wird nicht gestartet
-
entweder du baus dir eine struct, die sowohl die daten als auch »this« anthält oder du speicherst die Daten in einem Member deines Objektes zwischen.
-
Hi,
Ich speichere es nun als Member bekomme jedoch noch ein paar Fehler:
Header:class client { private: //blabla static void helprecive(void *arg); static void helpsend(void *arg); void emfpange(); void sending(); public: /blabla void send2server(char buffertosend[4096]); void recv2server(compile func); };
cpp:
void network::client::send2server(char buffertosend[4096]) { //blabla pthread_t t1; pthread_create(&t1,0,&helpsend,this); } } static void network::client::helpsend(void* arg) { static_cast<client>(arg)->sending(); } void network::client::sending() { //blabla }
Fehler:
/home/server/Desktop/networklib/network.cpp:41: Fehler: ungültige Umwandlung von »void (*)(void*)« in »void* (*)(void*)« /home/server/Desktop/networklib/network.cpp:41: Fehler: Argument 3 von »int pthread_create(pthread_t*, const pthread_attr_t*, void* (*)(void*), void*)« wird initialisiert /home/server/Desktop/networklib/network.cpp: At global scope: /home/server/Desktop/networklib/network.cpp:45: Fehler: Elementfunktion »static void network::client::helpsend(void*)« kann nicht deklariert werden, statische Bindung zu haben /home/server/Desktop/networklib/network.cpp: In static member function »static void network::client::helpsend(void*)«: /home/server/Desktop/networklib/network.cpp:46: Fehler: keine passende Funktion für Aufruf von »network::client::client(void*&)« /home/server/Desktop/networklib/network.cpp:2: Anmerkung: Kandidaten sind: network::client::client(char*, int, bool) /home/server/Desktop/networklib/network.h:20: Anmerkung: network::client::client(const network::client&)
Die Fehlermeldungen beziehen sich auf den oben geposteten Code.
MFG ReduX :xmas1:
-
static void network::client::helpsend(void* arg) { static_cast<client>(arg)->sending();}
=>
static void * network::client::helpsend(void* arg) { static_cast<client*>(arg)->sending();return 0;}
Die funktion gibt void* zurück und du castest auf client*
-
Hi,
Habe nun alles soweit hinbekommen. Jedoch bekomme ich noch bei der deklaration der static funktion folgenden Fehler:Fehler: Elementfunktion »static void* network::client::helprecive(void*)« kann nicht deklariert werden, statische Bindung zu haben
Mein C++ Buch hat da leider auch keine antwort darauf.
Frohes Neues noch!
MFG ReduX