Bonjour,
Je souhaiterais savoir comment utiliser les pthread pour appeler une fonction membre de ma classe.
Voici schematiquement ce que je voudrais faire:
.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include <pthread.h>
struct pthread_data
{
double a;
double b;
double c;
}
class MyClass
{
void anotherMemberFunction();
void memberFunctionToCall(double a, double b, double c);
static void *threadHandler(void *args);
struct pthread_data m_threads[2];
} |
.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #include "MyClass.h"
void MyClass::anotherMemberFunction()
{
...
iret1 = pthread_create( &thread1, NULL, MyClass::threadHandler,
(void*) &m_threads[1]);
iret2 = pthread_create( &thread1, NULL, MyClass::threadHandler,
(void*) &m_threads[2]);
...
}
void *MyClass::threadHandler(void *args)
{
struct pthread_data *data;
data = (struct pthread_data*) args;
memberFunctionToCall(data->a, data->b, data->c);
} |
J'obtiens l'erreur suivante:
erreur: cannot call member function void MyClass::memberFunctionToCall(double&, double&, double&) without object
J'insiste sur le fait que je souhaite appeler la function "memberFunctionToCall" avec l'objet courant (et toutes les valeurs de ses membres au moment de l'appel) et donc éviter toute solution qui créerait un objet juste pour effetuer l'appel, du genre
1 2 3 4 5
| void handler(void *args)
{
MyClass c;
c.memberFunctionToCall(...);
} |
Merci de votre aide.
Partager