IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

boost::thread et callback


Sujet :

Boost C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut boost::thread et callback
    Bonjour,

    J'ai une classe A contenant une fonction membre f() que je souhaiterais appeler dans un boost::thread, et une callback() (également fonction membre de A) que je souhaiterais passer en attribut à f(). Mon appel se fait depuis la classe A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void A::callback()
    {
       std::cout << "test";
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void A::f(std::function<void()> refCallback)
    {
       // fait des trucs
       refCallback();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    std::function<void()> f1 = boost::bind(&A::f, this);
    boost::thread t = boost::thread(boost::bind(&A::f, this), f1);
    Le compilateur me renvoit l'erreur suivante :
    boost/bind/mem_fn.hpp(342): error C2298: 'return'*: opération non conforme sur pointeur vers expression de fonction membre
    Savez-vous ce que j'ai mal fait dans mon code ?

    Merci beaucoup

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    Dû à un problème avec le boost::bind() qu'il faut parfois mettre ou ne pas mettre.

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Tu n'utilises pas A::callback. Par contre, il y a 2 fois A::f. Tu gagnerais à utiliser des lambdas et virer les intermédiaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    boost::thread t([this]{
      this->f();
      this->callback();
    });
    La stl dispose aussi d'un std::thread.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 38
    Points
    38
    Par défaut
    Exact merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Arreter l'execution d'un boost::thread
    Par stranger dans le forum Boost
    Réponses: 9
    Dernier message: 22/05/2007, 18h37
  2. [Débutant] boost::thread non-lvalue
    Par Tymk dans le forum Boost
    Réponses: 16
    Dernier message: 18/11/2006, 14h23
  3. Questions de perfomance avec boost::thread
    Par Rafy dans le forum Boost
    Réponses: 36
    Dernier message: 05/10/2006, 15h21
  4. boost::thread et OpenGL
    Par Kurisu dans le forum Boost
    Réponses: 12
    Dernier message: 19/09/2006, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo