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 :
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
13
14
15
16 // .h class ClasseDeLib { boost::signal < void() > sig ; void doLib() ; }; // .cpp void ClassDeLib::doLib() { ... if (test) sig() ; ... }
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.
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() ; ... }
Auriez-vous une idée de ce qui cloche ? Merci.
Partager