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

Auteur Sujet: [RESOLU][SFML 1.6] Paramètre d'une fonction appelée par un thread  (Lu 3569 fois)

0 Membres et 2 Invités sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Bonjour,

J'essaye d'appeler une fonction sur un thread tout en lui passant un objet de ma classe cependant ceci ne marche pas il m'indique une erreur, voici mon code :

Là ou j'initialise le thread :

MyCanvas::MyCanvas(MyFrame* Parent, const QPoint& Position, const QSize& Size) : QSFMLCanvas(Parent, Position, Size), th(&move, this)  {...}

Et ma fonction :

void move(void* UserData) { ...}

Dans le .h je n'ai fait que de déclarer ma fonction move en dehors de la classe car je ne sais pas si la classe Thread de ta bibliothèque gère aussi les pointeurs sur les fonctions membres..., mais comme ou doit passé un objets en paramètre pour pouvoir avoir accès aux donné de l'objet dans la fonction appelée par le thread je pense que non..., malheureusement quand j'essaye de le faire j'obtiens cette erreur à la compilation :

D:\Projets\c++\Sorrok\GraphicEngine\myCanvas.cpp|13|error: no matching function for call to 'sf::Thread::Thread(<unresolved overloaded function type>, void*)'|

et je ne comprend pas pourquoi il m'affiche ça...

Merci d'avance pour l'aide.





« Modifié: Novembre 20, 2012, 12:23:20 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6] Paramètre d'une fonction appelée par un thread
« Réponse #1 le: Novembre 20, 2012, 10:20:44 am »
Est-ce que l'en-tête qui déclare la fonction move est inclus, à l'endroit où tu crée le thread ?

Sinon, tu devrais passer à SFML 2 (et/ou à C++11), les threads y sont plus flexibles.
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : [SFML 1.6] Paramètre d'une fonction appelée par un thread
« Réponse #2 le: Novembre 20, 2012, 11:43:38 am »
Citer
Est-ce que l'en-tête qui déclare la fonction move est inclus, à l'endroit où tu crée le thread ?
Oui vu que je fais un include de mon .h dans le .cpp et j'ai défini ma fonction dans le .h
Le thread je le crée dans le constructeur de ma classe. (dans le .cpp)

Citer
Sinon, tu devrais passer à SFML 2 (et/ou à C++11), les threads y sont plus flexibles.
Oui j'ai remarqué ça et l'utilisation des mutex rend l'exécution longue. :/
Je pense passer à la SFML2 bientôt et tester si cela va mieux. :)

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML 1.6] Paramètre d'une fonction appelée par un thread
« Réponse #3 le: Novembre 20, 2012, 11:50:53 am »
Sinon pour ton problème, essaye ça :

th(&::move, this)
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : [SFML 1.6] Paramètre d'une fonction appelée par un thread
« Réponse #4 le: Novembre 20, 2012, 12:22:43 pm »
Ca marche merci.  :)