2010-06-01 3 views

Répondre

1

Fournissez votre propre fonction de connexion d'emplacement qui ne parvient pas à rétablir la connexion. Sans la connexion, le client ne peut pas le rompre.

Edit: exemple de code:

struct my_class 
{ 
    boost::signals::connection listen_event1(boost::function<void (my_class const&)> const& f) 
    { 
    return signal1.connect(f); 
    } 
    void listen_event2(boost::function<void my_class const&)> const& f) 
    { 
    signal2.connect(f); 
    } 

private: 
    typedef boost::signals::signal<void(my_class const&)> sig_t; 
    sig_t signal1; 
    sig_t signal2; 
}; 

connexions Signal2 ne peuvent pas être déconnectés.

+0

Vous voulez dire que mon signal sera un signal spécial dérivé de l'original? Est-ce qu'il aura deux fonctions de connexion? Un qui accepte une connexion amovible et un qui accepte une connexion non amovible? Ou voulez-vous dire que je devrais fournir une fonction qui se connecte mais ne renvoie pas une connexion? Comment puis-je surcharger le type de retour? –

+0

Non. J'espère que vous n'exposez pas votre objet signal publiquement, non? Vous avez des fonctions dans la classe qui génère des signaux qui vous permettent de vous connecter avec eux. Ne renvoyez simplement pas l'objet boost :: signals :: connection renvoyé par l'objet signal que vous utilisez pour implémenter ce signal. –

+0

J'expose ces signaux à travers des getters. Je l'ai vu fait dans http://www.webtoolkit.eu (Wt) –

Questions connexes