【发布时间】:2015-09-17 15:17:15
【问题描述】:
免责声明:此说明包含许多 Qt 特定功能。这不是回答问题的必要条件,我只是为了说明背景。
我需要在我的 QT 应用程序中进行一些繁重的计算。
为了做到这一点,我想使用 QtConcurrent::run(myFunction) 这是 Qt 的 async 版本并创建一个未来,它在某些时候将包含 myFunction 的结果。
问题在于该函数既是成员函数又需要复杂的参数。
我知道你可以同时传递一个函数和一个指向 QtConcurrent::run 的指针。然后将在指针上调用该函数。您甚至可以提供参数列表。但似乎这个列表只接受int、double 或QString 等参数。
实际问题:
我想转换这行代码:
model->nextStep(simulatedResult->last().molecules, dt)
进入
myFunction()
这意味着我需要
- 将指针绑定到函数
- 将参数绑定到函数
这是我目前的代码:
auto memfun=std::mem_fn(&ConcreteModel::nextStep);
auto memfun_bound_to_model=std::bind1st(memfun,model);
auto memfun_bound_result=std::bind1st(memfun_bound_to_model,simulatedResult->last().molecules);
auto memfun_bound_dt=std::bind1st(memfun_bound_result,dt);
不幸的是,这不起作用。 有18个编译器错误,这里是pastebin:http://pastebin.com/2rBQgFNL
如果您能解释如何正确执行此操作,那就太好了。 答案不是必需的,但更好的是 QtConcurrent::run 的代码。
【问题讨论】:
标签: c++ qt concurrency functional-programming mem-fun