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.