Boost logo

Boost Users :

Subject: Re: [Boost-users] [Signals2] Signal disconnect wrapper won't work
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2009-07-07 10:42:08


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<void ()> 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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net