You're absolutely right about the reference. That led to a process of chasing bugs in much more complex code than in my example that made me sprint right past the way to properly use the boost::bind/boost::function pair I needed in my event handler because I attributed some seg faults to it.
Do not code while half asleep!
Thank you for your and Alan's reply.
Charles Milutinovic <kssarh <at> gmail.com> writes:
[snip]
>[snip]
> namespace Alpha{ class MethodsInHere{
> void doesSomething(POD::POD* arg0){}
> };}
> namespace EventHandler{ class EventHandler{<aside>
> public:
> EventHandler(boost::function<void (POD::POD*)>& function)
> : assign_to_me(function){}
> boost::function<void (POD::POD*)>& assign_to_me;
> };}
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>
[snip]
> 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.
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 mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users