Eigene Struct zu LPVOID
-
Hallo Forum,
ich bin grade bei Winsockets. Ich habe eine eigene kleine Struktur CONNECTION. Da ich mehrere Clients haben will, benutze ich Threads:CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) Listen_To_Connection, (LPVOID) connection, NULL, 0);Das geht aber leider nicht, da man mein CONNECTION nicht zu LPVOID casten kann. Versucht habe ich es mit einem Zeiger auf CONNECTION, auf void, ich habe einen reinterpret_cast benutzt, aber nichts klappt.
Kann mir einer helfen?
mit freundlichen Grüßen TheCrip
-
Probier mal
(LPVOID) &connection. Da musste in der Funktion dann natürlich entsprechend dereferenzieren.
-
So hab ich es probiert:
//in der main CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) Listen_To_Connection, (LPVOID) &(connection[nCount]) , NULL, 0); //Später... int WINAPI Listen_To_Connection(LPVOID data) { CONNECTION c; &c = data; // Auch mit verschiedenen casts //... }Das klappt leider nicht: error C2440: '=': 'LPVOID' kann nicht in 'CONNECTION *' konvertiert werden
Auch wenn ich einen Zeiger *c nehme, wird das nix.
-
int WINAPI Listen_To_Connection(LPVOID data) { CONNECTION *c = data; // habs nich getestet, eventuell ist static_cast oder reinterpret_cast nötig c->foo(); // alternativ: CONNECTION &c = *data; // evntl. mit cast c.foo(); }Sowas gehört aber mehr oder weniger zu den Basics.
-
ipsec schrieb:
Sowas gehört aber mehr oder weniger zu den Basics.
Jup, erst laufen lernen, dann Rennen fahren.

-
Nur ersteres klappt, mit einem reinterpret_cast. Ich hab das reinterpreten aber nur beim Aufruf von CreateThread benutzt

E: Bei mir ist es mittlerweile Learning bei Doing...