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:
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:
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.