Forum de la communauté SFML

Aide => Système => Discussion démarrée par: Sozary le Janvier 31, 2017, 05:34:06 pm

Titre: [R] sf::Thread entre deux classes
Posté par: Sozary le Janvier 31, 2017, 05:34:06 pm
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.
Titre: Re : sf::Thread entre deux classes
Posté par: Laurent le Janvier 31, 2017, 05:38:13 pm
Il te manque un paramètre, à savoir un B* (puisque la fonction est membre non-statique). Ou alors relis bien le tutoriel, c'est très bien expliqué.
Titre: Re : sf::Thread entre deux classes
Posté par: Sozary le Janvier 31, 2017, 06:59:20 pm
J'ai bien relu le tutoriel mais je n'ai pas trouvé ...
Je dois mettre mon B* dans la liste des arguments?

Cordialement
Titre: Re : sf::Thread entre deux classes
Posté par: Laurent le Janvier 31, 2017, 08:00:55 pm
Citer
J'ai bien relu le tutoriel mais je n'ai pas trouvé ...
Là :
Citation de: le tutoriel
- Fonction membre :

class MyClass
{
public:

    void func()
    {
    }
};

MyClass object;
sf::Thread thread(&MyClass::func, &object);

Citer
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.
Titre: Re : sf::Thread entre deux classes
Posté par: Sozary le Janvier 31, 2017, 09:02:03 pm
Ah c'est donc ça!
Merci ça deviens plus clair!
Merci pour vos réponses  :).

Cordialement