Bonsoir,
J ai une classe A et une classe B, et je voudrais pouvoir lancer une méthode de la classe B en thread depuis la classe A.
Je fais donc:
class B{
public:
void function(int* i){};
}
class A{
A():m_thread(&B::function,nullptr)
{}
private:
sf::Thread m_thread;
}
Et le compilo me dit qu il n y a pas de "function" avec 1 argument...
Des idées?
Cordialement.
J'ai bien relu le tutoriel mais je n'ai pas trouvé ...
Là :
- Fonction membre :
class MyClass
{
public:
void func()
{
}
};
MyClass object;
sf::Thread thread(&MyClass::func, &object);
Je dois mettre mon B* dans la liste des arguments?
Si tu n'utilisais pas de thread il t'en faudrait un :
B b;
b.function(nullptr);
... donc oui, sf::Thread ne peut pas magiquement inventer un B ;)
Mais surtout sf::Thread ne gère pas les fonctions membres à un paramètre, comme indiqué dans le tutoriel et la documentation. Utilise std::thread, il n'y a aujourd'hui vraiment aucune raison de s'en passer.