【发布时间】:2011-10-26 22:30:00
【问题描述】:
我正在尝试通过如下方法传递std::function:
class dispatch
{
public:
deliver( std::function<void ( void )> task );
};
这按预期工作。但是,我希望将参数传递给作为任务提供的某些方法,但不希望为所有不同的 function< ... > 表单创建重载。
例如,是否有可能只创建一个如下所示的方法
deliver( std::function& task );
只需调用
dispatch->deliver( bind( &Object::method, X ) );
或
dispatch->deliver( bind( &Object::method, X, arg1, arg2 ) );
等等……
感谢大家的意见。看来我真正的错是对dispatch->deliver 的调用,而附加参数也是绑定调用。
dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );
错误:/usr/include/c++/v1/functional:1539:13:错误:没有匹配的函数调用'__mu_expand' 返回 __mu_expand(__ti, __uj, __indices());
【问题讨论】:
-
类声明后缺少
;。 :-)