Ben*_*rst 8 c++ bind function c++11
我试图通过像这样的方法传递一个std :: function:
class dispatch
{
public:
deliver( std::function<void ( void )> task );
}
Run Code Online (Sandbox Code Playgroud)
这按预期工作.但是我希望将参数传递给作为任务提供的一些方法,但是不希望为所有不同的函数<...>形式创建重载.
例如,它只是为了创建一个像下面这样的方法
deliver( std::function& task );
Run Code Online (Sandbox Code Playgroud)
并且只是调用
dispatch->deliver( bind( &Object::method, X ) );
Run Code Online (Sandbox Code Playgroud)
要么
dispatch->deliver( bind( &Object::method, X, arg1, arg2 ) );
Run Code Online (Sandbox Code Playgroud)
等等...
感谢大家的投入.看起来我真正的错误是调用dispatch-> deliver,附加参数也是绑定调用.
dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );
Run Code Online (Sandbox Code Playgroud)
错误:/ usr/include/c ++/v1/functional:1539:13:错误:没有匹配函数来调用'__mu_expand'返回__mu_expand(__ ti,__ uj,__ indices());
Cat*_*lus 10
std::function<void(void)>已经是多态的,这就是它的重点.因此,这两个最后的片段将起作用(只要函数bind返回可以不带参数调用,当然不返回任何内容),而不会更改已有的内容.
| 归档时间: |
|
| 查看次数: |
16059 次 |
| 最近记录: |