Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost:Bind//Boost:Function -- Need some help with a constructor trying to bind to a function
From: Ryan Gallagher (ryan.gallagher_at_[hidden])
Date: 2008-11-02 19:57:02


Charles Milutinovic <kssarh <at> gmail.com> writes:
[snip]
>
> namespace Alpha{ class MethodsInHere{
>      void doesSomething(POD::POD* arg0){}
> };}
[snip]
> namespace EventHandler{ class EventHandler{
>    public:
>        EventHandler(boost::function<void (POD::POD*)>& function)
> : assign_to_me(function){}
>        boost::function<void (POD::POD*)>& assign_to_me;
>     };}

<aside>
I don't think you want assign_to_me to be a reference,
but just hold by value. Otherwise you're holding a reference to
a temporary below.
</aside>

> Alpha::MethodsInHere mih;
> EventHandler eh(boost::bind(&Alpha::MethodsInHere::doesSomething,
> ????, _1))
>
> --------My question is basically if this is possible. 
> I was having a ton of trouble getting this to work, and after
> digging through some docs it seems like the '?????' in line of
> code in #4 needs to be a reference to eh . . . which isn't
> constructed yet. If I'm wrong, please tell me how to construct
> this bind properly. 
[snip]

Sorry, but you're wrong. You want "????" to be "mih", not "eh".
"doesSomething"'s type is basically
"(Alpha::MethodsInHere&, POD::POD*) -> void"
hence you need and instance of Alpha::MethodsInHere. HTH,

-Ryan


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