Boost logo

Boost Users :

From: Stuart Dootson (stuart.dootson_at_[hidden])
Date: 2005-11-24 01:14:18


On 11/24/05, Kerner, Jacques <jkerner_at_[hidden]> wrote:
>
>
> Hi,
>
> I would like to create a functor for calling functions in a chain like this
> :
>
> car.GetRigidBody().GetPosition().GetX()
>
> What is the best way to do that using bind (and lambda ?)
>
> The car.GetRigidBody() is easy : bind(&Car::GetRigidBody, &car) , but then I
> am a bit stuck. Note that I don't want to store the result of
> car.GetRigidBody(). I want the final functor to call all the functions
> everytime its operator() is called. So
>
>
> bind (
> &Position::GetX,
> &bind (
> &RigidBody::GetPosition,
> &bind (
>
> &Car::GetRigidBody,
>
> &car
> )()
> )()
> )
>
> would not be acceptable…
>
> Any help greatly appreciated
>
> Jacques Kerner

You're nearly there:

bind(&Position::GetX,
     bind(&RigidBody::GetPosition,
          bind(&Car::GetRigidBody,
               &car)));

should do the job - i.e. no '&' on the binds.

Stuart Dootson


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