Forum de la communauté SFML

Aide => Système => Discussion démarrée par: DexArio le Novembre 01, 2014, 03:33:00 pm

Titre: Threads - Utiliser std::bind dans une classe
Posté par: DexArio le Novembre 01, 2014, 03:33:00 pm
Bonjour,

Je me demandai si il était possible d'utiliser std::bind pour les theads dans une classe. Ce code clarifiera ma question:


class MyClass
{
    MyClass();
    ~MyClass();

    void Start()
    {
        thread = new sf::Thread(std::bind(&MyClass::Func, 0));
        thread->launch();
    }
    void Func(int arg1)
    {
        //Some code
    }

private:
    sf::Thread *thread;
};
 

Le code n'est pas complet, c'est juste un exemple, mais dans mon vrai code, j'ai fait l'équivalent de cela mais le problème est que j'ai l'erreur suivante (sous Visual Studio)

error C2064: term does not evaluate to a function taking 1 arguments

Bref, ce que je veux faire, c'est exécuter une méthode prenant un argument avec avec un thread dans une classe.

Merci.
Titre: Re : Threads - Utiliser std::bind dans une classe
Posté par: Laurent le Novembre 01, 2014, 04:10:20 pm
Lorsque tu veux utiliser une fonction membre d'une classe, il faut un pointeur vers une instance de cette classe. Donc il manque 'this' comme paramètre à ton appel à std::bind. Et franchement, si tu as std::bind alors tu as sûrement std::thread aussi, et je ne peux que te conseiller de l'utiliser si c'est le cas.