Bonjour à tous!
Je m'exerce aux threads avec glib et j'ai écrit une classe qui devrait pouvoir instancier une classe enfant (6 maximum). De plus cette classe possède un membre "int" dont la valeur est choisie et changée "aléatoirement" jusqu'à ce que les 6 "int" forment une suite. Je sais pas si c'est très claire...
Le .cc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class CTest { public: //...// void _chercher(); protected: int m_val; GThread* m_pthread; CTest* m_parent; CTest* m_enfant; static int compteur; void _enfanter(CTest*); };
Le compilateur me dit "invalide use of member". Par contre si j'ecris une fonction externe à la classe le probleme est "résolu" (presque puisque je ne peux plus faire ce que je voulais).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 //...// CTest::CTest(CTest* pointeur):m_parent(pointeur) { if(compteur<6) {m_pthread=g_thread_create((GThreadFunc)_enfanter,this,TRUE,NULL);}-->>erreur //...// } void CTest::_enfanter(CTest* p) { m_enfant=new CTest(p); }
Faut-il comprendre qu'on ne peut pas appeler une fonction membre de la classe à l'intérieur d'un thread ou y a t-il moyen de le faire malgré tout?
Partager