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::signal mal initialisé


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 26
    Par défaut boost::signal mal initialisé
    Bonjour,

    J'essaye d'utiliser un signal en tant que variable membre d'un objet dans une librairie, pour me connecter ensuite à ce signal à partir du programme principal.
    Au moment d'appeler la fonction connect, le programme plante, car le signal semble mal initialisé (sa variable membre impl pointe sur NULL).

    Dans la librairie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // .h
    class ClasseDeLib
    {
        boost::signal < void() > sig ;
        void doLib() ;
    };
     
    // .cpp
    void ClassDeLib::doLib()
    {
        ...
        if (test)
            sig() ;
        ...
    }
    Dans le programme principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // .cpp
    void ClasseDeProg::doProg()
    {
        ...
        ClasseDeLib truc ;
        truc.sig.connect(boost::bind(&ClasseDeProg::doSomethingAppropriate, boost::ref(*this))) ;
        ...
        ...
        truc.doLib() ;
        ...
    }
    Comme dit plus haut, le plantage se produit lors de l'appel à connect, car truc.sig.impl (qui est déréférencé dans le code de connect) pointe vers l'adresse 0.

    Auriez-vous une idée de ce qui cloche ? Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 26
    Par défaut
    Bon je viens de comprendre ce qu'il se passait. J'ai un peu honte du coup. En fait j'avais trafiqué mon CMakeLists récemment, et parmi les modifications, j'ai changé le nom de la fameuse librairie qui me pose problème. Du coup mon programme liait une ancienne version de la lib, une qui ne contenait pas le signal...

    Bref, my mistake...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/09/2010, 18h12
  2. Réponses: 2
    Dernier message: 28/04/2008, 01h11
  3. Lier les signal/slot de Qt à boost::signal
    Par Davidbrcz dans le forum Qt
    Réponses: 7
    Dernier message: 25/04/2008, 11h50
  4. Boost signal thread safe?
    Par epsilon68 dans le forum Boost
    Réponses: 13
    Dernier message: 04/02/2008, 17h20

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