
Brian Braatz wrote:
With the following code, If you UNCOMMENT the "// public : Base" line, you get compiler errors (????)
I have tested this with MS VC 7.1 against both 1.31 and 1.32 versions of boost with the same results.
Any idea why this is happening? (full sample code I wrote is attached) [snip] std::string ReturnAString(); [snip] bind(Base::ReturnAString,_1);
This is the problem. Try: bind(Base::ReturnAString); or: bind(&Base::ReturnAString,this);
My Compiler errors are this:
c:\Data\Rmtg\Root\_Common\_Lib\Rmx\V_0_02\Exp\Src\LambdaProblem\Test_Lam bdaProblem.cpp(38) : error C2780: 'const boost::lambda::lambda_functor<... > boost::lambda::bind(...)' : expects 10 arguments - 2 provided
The error is misleading. I got a similar error when using Boost.Bind in my GUI code. The basics of it is this: the arguments of bind(fn, ...) must match to the arguments of the function *exactly*, using _n for unspecified arguments. What this means is: using boost::bind; using boost::function; class button { void draw( event * ev ); }; button btn; function< ( event * ) > foo = bind(&button::draw,&btn); // [1] foo = bind(&button::draw,&btn,_1); // _1 needed for the event * argument [1] generates a similar error message to the one you get above. Maybe this should be mentioned in the documentation somewhere. HTH, Reece