Bonjour à tous,

Je rencontre un petit problème.
J'ai une class THREAD qui sert tout simplement à encapsuler le système de thread de l'API Win32.
Dans cette classe j'ai une fonction DWORD WINAPI lancer_thread(LPVOID), cette fonction est appelée lors de la création du thread (3ème argument de CreateThread()).
Cette fonction appelle en réalité une autre fonction pointée par un membre de la classe THREAD.
C'est simplement pour l'encapsulation, ça me permet d'utiliser des types standards pour créer ma fonction-thread() dans mon code. Au lieu de faire une fonction DWORD WINAPI fonction(LPVOID), je fait une void fonction(void*).
Mais voilà, lorsque ma classe appelle CreateThread, elle a besoin d'un pointeur sur lancer_thread (3ème argument de CreateThread()), et si j'écris :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
CreateThread(NULL,0,&this->lancer_thread, parametres, CREATE_SUSPENDED, &this->id_thread);
Mon compilateur (GCC) Me renvoie gentiment l'erreur suivante :

ISO C++ forbids taking the address of a bound member function to form a pointer to member function. Say '&GM::THREAD::lancer_thread'
Je veux bien moi mais je ne peux pas mettre ma fonction en static!!

Comment faire?!?

Merci d'avance de vos réponses.

Spartan03