bonjour.
je test boost signal. et je 'arrive pas a declencher un signal dans le slot d'un autre signal.
Est-ce impossible de declencher un signal dans le context d'un autre signal ?
voici mon code de test
la methode controler::connectSignal est bien appelle mais ne declenche pas le signal. Par contre si j'appelle controler::connectSignal directement le signal est bien declencher et user::slot est appeller.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 #include <boost/signal.hpp> #include <boost/bind.hpp> #include <iostream> #include <string> class controler { public: typedef boost::signal<void (std::string)> signal_t; typedef boost::signals::connection connection_t; controler() {} controler(const controler&) {} connection_t registerSignal(signal_t::slot_function_type slot) { return m_sig.connect(slot); } void connectSignal(std::string data) { std::cout << "connectSignal recv: " << data << std::endl; m_sig(data); } private: signal_t m_sig; }; class user { public: user(controler& c) { c.registerSignal(boost::bind(&user::slot, this, _1)); } void slot(std::string data) const { std::cout << "signal conteroler -> user ok" << std::endl; std::cout << typeid(this).name() << " -> " << data << std::endl; } }; int main() { controler control; user u1(control); boost::signal<void (std::string)> mainSignal; mainSignal.connect(boost::bind(&controler::connectSignal, control, _1)); mainSignal("message de test"); return 0; }
Quelqu'un c'est pourquoi ?
merci d'avance
Partager