Salut,
Je pense que le titre est plutôt explicite.
Je voudrais faire une thread dans une classe.
Je ne sais pas si c'est possible mais si ça ne l'est pas, je veux bien une autre solution.
C'est en faite un thread qui servirait pour le réseau dans mon petit FPS.
moi ce que je te propose : comme un thread démarre avec une fonction (et non une méthode) de la forme : (avec l'API Windows)
int WINAPI fonc(void* param);
C'est de lancer ton thread depuis une méthode de ta classe, et de passer "this" en parametre : ainsi, tu peux tout de suite relancer dans une méthode. L'inconvénient, c'est que ça sort de l'instance pour y rerentrer.
je sais pas si tu as vu mais y a un mini tuto sur <lien url="je sais pas si tu as vu mais y a un mini tuto s">developpez.com</lien> qui parle de ça. Alors c'est pas exactement la même chose mais c'est une classe serveur qui lance un thread à chaque fois qu'un client se connecte alors ça pourrait être la même technique pour toi.
Selon le MSDN, le protoype d'une fonction de thread doit être
DWORD WINAPI ThreadProc(LPVOID lpParam);
Sachant que DWORD et LPVOID sont définis comme ceci
typedefunsignedlong DWORD;
typedefvoid * LPVOID;
int indique un type de retour entier signé, tandis que DWORD indique un type de retour entier long non signé, donc ce n'est pas tout à fait pareil, même si sous Windows c'est presque la même chose (au bit de signe près).
Il existe une autre solution, plus dans l'esprit du C++, qui constiste à déclarer la ThreadProc comme une fonction membre statique. L'avantage est qu'il devient possible de faire de cette fonction un membre privé de la classe avec tous les avantages que cela peut comporter au niveau de la maitrise du code.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Recueil de code C et C++ http://fvirtman.free.fr/recueil/index.html