我想做点什么
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_);
这里有什么问题?
答案 0 :(得分:1)
bind
的第一个模板参数是返回类型。所以,它应该是void
。或者只是省略它。boost::function
签名与绑定函数之一不匹配。设为function<void(void *)>
。shared_ptr
。底线:boost::function<void (void *)> op = boost::bind(test_method, user_test_case, _1);