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

Auteur Sujet: Thread et adressage d'un pointeur sur membre  (Lu 2134 fois)

0 Membres et 1 Invité sur ce sujet

Specula

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Thread et adressage d'un pointeur sur membre
« le: Septembre 06, 2013, 05:05:25 pm »
Bonjour,

Cela fait quelques jours que je me suis mis à utiliser des thread pour diverses raisons et, aujourd'hui, je suis tombé sur une erreur incompréhensible pour moi.

Voici l'erreur donné par mon compilateur :
C:\SFML-2.1\include\SFML\System\Thread.inl|39|error: must use '.*' or '->*' to call pointer-to-member function in
'((sf::priv::ThreadFunctor<void (A::*)()>*)this)->sf::priv::ThreadFunctor<void (A::*)()>::m_functor (...)',
 e.g. '(... ->* ((sf::priv::ThreadFunctor<void (A::*)()>*)this)->sf::priv::ThreadFunctor<void (A::*)()>::m_functor) (...)'|

Malgré une recherche sur internet sur l'opération ".*" et sa signification, je ne comprends toujours pas l'erreur. (Le numero de ligne me donne l'accolade de fin du main.)

Voici le code minimale reproduisant l'erreur :

#include <SFML/System.hpp>
#include <iostream>
#include <string>

class A
{
public :
    A()
    {
        myTh = new sf::Thread(&A::Fct);
        mot = "test";
    }
    void Launch()
    {
        myTh->launch();
        myTh->wait();
    }
    ~A()
    {
        delete myTh;
    }

private :
    void Fct()
    {
        std::cout << mot.size();
    }
    sf::Thread* myTh;
    std::string mot;
};

int main()
{
    A a;
    a.Launch();
    return 0;
}

Merci d'avance

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Thread et adressage d'un pointeur sur membre
« Réponse #1 le: Septembre 06, 2013, 06:20:36 pm »
myTh = new sf::Thread(&A::Fct, this);
Laurent Gomila - SFML developer

Specula

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : Thread et adressage d'un pointeur sur membre
« Réponse #2 le: Septembre 06, 2013, 06:54:55 pm »
Merci! Ça marche !
Mais, en fait, pourquoi a-t-il besoin du pointeur this ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Thread et adressage d'un pointeur sur membre
« Réponse #3 le: Septembre 06, 2013, 08:30:08 pm »
Comment veux-tu appeler une fonction membre non-statique sans objet ?
Laurent Gomila - SFML developer