1

我想做类似的事情

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_);

这里有什么问题?

4

1 回答 1

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

底线:boost::function<void (void *)> op = boost::bind(test_method, user_test_case, _1);

于 2013-09-24T18:41:48.533 回答