Re: [Boost-users] bind()ing only some arguments of a member function
I think you need to modify the bind to be: bind(&MyClass::foo,this,_1);
-----Original Message----- From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Sean Rhea Sent: Monday, February 13, 2006 2:54 PM To: boost-users@lists.boost.org Subject: [Boost-users] bind()ing only some arguments of a member function
Hello,
Can someone please tell me why this doesn't work?
#include <boost/bind.hpp> #include <boost/function.hpp> #include <boost/shared_ptr.hpp>
using namespace std; using namespace boost;
struct MyClass { int i; void foo(int j){ printf("%d, %d\n", i, j); } function<void(int)> bar() { return bind<void>(&MyClass::foo, this); } };
$ g++ -c -g -I/usr/local/include/boost-1_33_1 -I.. foo.cpp /usr/local/include/boost-1_33_1/boost/mem_fn.hpp: In member function 'R& boost::_mfi::dm<R, T>::operator()(T*) const [with R = void () (int), T = MyClass]': /usr/local/include/boost-1_33_1/boost/bind.hpp:229: instantiated from 'void boost::_bi::list1<A1>::operator()(boost::_bi::type<void>, F&, A&, int) [with F = void (MyClass::*)(int), A = boost::_bi::list1<int&>, A1 = boost::_bi::value<MyClass*>]' /usr/local/include/boost-1_33_1/boost/bind/bind_template.hpp:32: instantiated from 'typename boost::_bi::result_traits<R, F>::type boost::_bi::bind_t<R, F, L>::operator()(A1&) [with A1 = int, R = void, F = void (MyClass::*)(int), L = boost::_bi::list1<boost::_bi::value<MyClass*> >]' /usr/local/include/boost-1_33_1/boost/function/function_template.hpp: 136: instantiated from 'static void boost::detail::function::void_function_obj_invoker1<FunctionObj, R, T0>::invoke(boost::detail::function::any_pointer, T0) [with FunctionObj = boost::_bi::bind_t<void, void (MyClass::*)(int), boost::_bi::list1<boost::_bi::value<MyClass*> > >, R = void, T0 = int]' /usr/local/include/boost-1_33_1/boost/function/function_template.hpp: 479: instantiated from 'void boost::function1<R, T0, Allocator>::assign_to(FunctionObj, boost::detail::function::function_obj_tag) [with FunctionObj = boost::_bi::bind_t<void, void (MyClass::*)(int), boost::_bi::list1<boost::_bi::value<MyClass*> > >, R = void, T0 = int, Allocator = std::allocator<void>]' /usr/local/include/boost-1_33_1/boost/function/function_template.hpp: 430: instantiated from 'void boost::function1<R, T0, Allocator>::assign_to(Functor) [with Functor = boost::_bi::bind_t<void, void (MyClass::*)(int), boost::_bi::list1<boost::_bi::value<MyClass*> > >, R = void, T0 = int, Allocator = std::allocator<void>]' /usr/local/include/boost-1_33_1/boost/function/function_template.hpp: 294: instantiated from 'boost::function1<R, T0, Allocator>::function1(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integ ral<Functo r>::value>::value, int>::type) [with Functor = boost::_bi::bind_t<void, void (MyClass::*)(int), boost::_bi::list1<boost::_bi::value<MyClass*> > >, R = void, T0 = int, Allocator = std::allocator<void>]' /usr/local/include/boost-1_33_1/boost/function/function_template.hpp: 637: instantiated from 'boost::function<R ()(T0), Allocator>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integ ral<Functo r>::value>::value, int>::type) [with Functor = boost::_bi::bind_t<void, void (MyClass::*)(int), boost::_bi::list1<boost::_bi::value<MyClass*> > >, R = void, T0 = int, Allocator = std::allocator<void>]' foo.cpp:15: instantiated from here /usr/local/include/boost-1_33_1/boost/mem_fn.hpp:347: error: invalid use of non-static member function
Thanks, Sean -- Compassion, tolerance, consideration of others, the responsible use of knowledge and power. These principles transcend the barriers between religious believers and non-believers; they belong not to one faith, but to all faiths. -- The 14th Dalai Lama
participants (1)
-
Sohail Somani