Oh, that works, thanks! To clarify though, for a member function, bind can be passed either an object pointer, an object reference, a function that returns an object pointer (the result of another bind), or a function that returns an object reference? I'm definitely a fan of this library now =) --- In Boost-Users@y..., Jaakko Jarvi <jajarvi@c...> wrote:
I think what you want is something like bind( &Controller::DoSomething, bind( &A::GetController, _1 ) );
That didn't work when I tried earlier, either because bind() produces a function instead of a pointer to a Controller or because GetController returns a reference instead of a pointer.
When binding member pointers, LL accepts either pointers or references as the object argument, and the above should thus work.
This example works for me:
#include "boost/lambda/bind.hpp" #include "boost/lambda/lambda.hpp"
#include <iostream>
using namespace boost; using namespace boost::lambda;
class Controller { public: void DoSomething() { std::cout << "Hello World!"; }; };
class View { Controller& contr; public: View(Controller& c) : contr(c) {}; Controller& GetController() { return contr; } };
int main () {
Controller c; View v(c);
bind(&Controller::DoSomething, bind(&View::GetController, _1))(v);
};
/Jaakko
Yahoo! Groups Sponsor ADVERTISEMENT
Info: <http://www.boost.org> Wiki: <http://www.crystalclearsoftware.com/cgi-
bin/boost_wiki/wiki.pl>
Unsubscribe: <mailto:boost-users-unsubscribe@y...>
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
-- -- -- Jaakko Järvi email: jajarvi@c... -- Post Doctoral Fellow phone: +1 (812) 855-3608 -- Pervasive Technology Labs fax: +1 (812) 855-4829 -- Indiana University, Bloomington