gpt4 book ai didi

c++0x std::function 作为方法参数

转载 作者:可可西里 更新时间:2023-11-01 18:19:10 26 4
gpt4 key购买 nike

我正在尝试传递 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附加参数也是绑定(bind)调用。

dispatch->deliver( bind( &Object::method1, X1, bind( &Object::method1, X2 ) );

error: /usr/include/c++/v1/functional:1539:13: error: no matching function for call to '__mu_expand'return __mu_expand(__ti, __uj, __indices());

最佳答案

std::function<void(void)>已经是多态的,这就是它的全部意义所在。所以最后两个片段将起作用(只要仿函数 bind 可以在没有参数的情况下调用返回值,当然也不返回任何值),而无需更改您已有的内容。

关于c++0x std::function 作为方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com