Boost logo

Boost Users :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2005-11-24 06:41:05


Kerner, Jacques 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...

Just drop the invocations:

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


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