Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3383 connectés 

 


Dernière réponse
Sujet : [C++] passer une fonction menbre à CreateThread
sanglier04 merci :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
sanglier04 merci :)
verdoux

Code :
  1. class A {
  2.         public:
  3.         void test(){}
  4.         static void cbA(A&);
  5. };
  6. void A::cbA(A& a) {
  7.         a.test();
  8. }
  9. int main() {
  10.         A a;
  11.         A::cbA(a);
  12. }

smaragdus

sanglier04 a écrit a écrit :

merci, effectivement ca marche mieu. mais n'y a t'il pas un autre moyen car la si je met ma fonction menbre en static tout ce qu'elle utilise "de l'exterieur" doit aussi être statique. :(  




 
Tu n'as qu'à passer un pointeur vers l'objet en paramètre de la méthode statique.

sanglier04 merci, effectivement ca marche mieu. mais n'y a t'il pas un autre moyen car la si je met ma fonction menbre en static tout ce qu'elle utilise "de l'exterieur" doit aussi être statique. :(
smaragdus Pour utiliser une méthode dans un callback, il faut qu'elle soit statique.
sanglier04 lut, la fonction CreateThread pour un de ces arguments, un pointeur sur une fonction. je voudrai fait la même chose mais avec une fonction menbre :
 

Code :
  1. BOOL ServeurTCP::start()
  2. {
  3.     DWORD  threadID;
  4.    CreateThread (NULL, 0,
  5.    &ServeurTCP::attenteTCP,
  6.    NULL, 0, &threadID);
  7. }


 
ou attenteTCP et start sont des fonctions menbre de la classe ServeurTCP.
 
le compilo me dit qu'il ne peut pas convertire ma fonction menbre en une fonction accecptable par CreateThread :
 
Error:  serveurtcp.cpp(23,23):Cannot convert 'unsigned long (__stdcall ServeurTCP::*)(void *)' to 'unsigned long (__stdcall *)(void *)'
 
 
:??:


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)