Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Threads - Utiliser std::bind dans une classe  (Lu 2113 fois)

0 Membres et 1 Invité sur ce sujet

DexArio

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Threads - Utiliser std::bind dans une classe
« 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.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Threads - Utiliser std::bind dans une classe
« Réponse #1 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.
Laurent Gomila - SFML developer