C ++ Boost :: bind:指向绑定函数的指针只能用于调用函数

时间:2013-09-24 16:26:58

标签: c++ boost boost-bind

我想做点什么

template<typename InstanceType>
            void add_test(void (InstanceType::* test_method )(void*),
 std::tr1::shared_ptr<InstanceType> user_test_case)
            {
                boost::function<void ()> op;
                op = boost::bind<InstanceType>(test_method, *user_test_case);

但它说:

1>d:\boost\boost/bind/mem_fn.hpp(359): error: a pointer to a bound function may only be used to call the function
1>          return (t.*f_);

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

  1. bind的第一个模板参数是返回类型。所以,它应该是void。或者只是省略它。
  2. boost::function签名与绑定函数之一不匹配。设为function<void(void *)>
  3. 您创建的仿函数应接受1个参数,因此请提供相应的参数占位符。
  4. 最后,您可以直接绑定到shared_ptr
  5. 底线:boost::function<void (void *)> op = boost::bind(test_method, user_test_case, _1);