AMDG Marc dela Cruz wrote:
Hopefully this is not another simple oversight on my part but I have code like below and the disconnect wrapper does not work.
Thanks.
typedef boost::signals2::signal
VoidSignal; typedef VoidSignal::slot_type VoidSlot; class x{ public: void somefuncA() { cerr << "Bada bing" << endl; } void somefuncB() { cerr << "Bada boom " << endl; } }; void disconnect(VoidSlot const& rF, VoidSignal& rSig) { rSig.disconnect(rF); //won't compile //rSig.disconnect(&rF); //compiles but doesn't disconnect }
int main() { x myX; VoidSignal sig; sig.connect(VoidSlot(&x::somefuncB, &myX)); disconnect(VoidSlot(&x::somefuncB, &myX, sig); //doesn't work/compile as expected disconnect(boost::bind(&x::somefuncB, &myX, sig); //doesn't work/compile either sig(); // will still invoke somefuncB return 0; }
Ignoring all the minor syntax errors, my guess is that the basic problem is http://www.boost.org/doc/html/function/faq.html#id1877737 In Christ, Steven Watanabe