Boost logo

Boost Users :

Subject: Re: [Boost-users] A question on member functions in a class using lambda expression? Can anyone with kindness help me?
From: Stuart Dootson (stuart.dootson_at_[hidden])
Date: 2009-07-21 04:14:05


2009/7/21 fmingu <fmingu_at_[hidden]>
>
> Oh.Please do not play joke on me.
> I am doing my work seriously. I really want the answer on lambda expression in order to know lambda expression further.
> Can any one with kindness help me?
>
> I am using Dev-C++ 4.9.8.0,with lambda expression:
>
> .....................
> class A{
> .............
> int result;
> double function2(const int& n)
> .........................
> double function3(const int& Q,const int& N)
> ......................
> double function1(const int& q, int& n){
> double result=0.0;
> int loopvalue=0, totaltime=n;
> n%=q;
> ++thenumbern;
> ( for_loop(var(loopvalue)=0,var(loopvalue)<=var(totaltime),++var(loopvalue),
> var(result)+=( bind(&A::function2,_2)*bind(&A::function3,_1,_2))))(q,n);
> return result;
> }
> But the complier told me that:
> ...............................
> \boost\lambda\detail\select_functions.hpp
> instantiated from `Arg::sig<boost::tuples::tuple<A&,.................
> instantiated from `RET boost::lambda::lambda_functor_base<boost::lambda::forloop_action, Args>::call(A&, B&, C....................
> \boost\lambda\detail\lambda_functors.hpp
> instantiated from `T::sig<boost::tuples::tuple<A&, B&, boost::tuples::null_type, boost::tuples::null_type, ............... instantiated from here
>
> By the way, is the result in var(result) the double result in function1 or the int result in class A?
> Can any one with kindness help me?
>
>
>
>
>
> ________________________________
> ÍøÒ×YEAH.NETÃâ·ÑÓÊÏ䣺ÄúµÄÖÕÉíÃâ·ÑÓÊÏä
> _______________________________________________

You've forgotten that member functions need an object reference...change

bind(&A::function2,_2)

to

bind(&A::function2,this,_2)

and

bind(&A::function3,_1,_2)

to

bind(&A::function3,this,_1,_2)

HOWEVER - as Roman was alluding - just because you CAN do something
(like this loop) in lambda doesn't mean it's a good idea to...

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