使用带有成员函数错误C2664的线程的std :: promise

时间:2016-06-30 00:22:53

标签: c++ multithreading c++11 promise future

我收到错误说

 error C2664: 
'void std::_Pmf_wrap<void (__thiscall WalkingController::*
)(std::promise<std::tuple<float,float>>
&&),void,WalkingController,std::promise<std::tuple<float,float>>
&&>::operator ()(_Farg0 &,std::promise<std::tuple<float,float>> &&)
const' : cannot convert argument 2 from
'std::promise<std::tuple<float,float>>' to
'std::promise<std::tuple<float,float>> &&'

我正在尝试创建一个承诺,它将在一个单独的线程上运行,以在我的类中执行成员函数。 它看起来像这样:

std::promise<std::tuple<float, float>> p_upperTorques;
auto f_upperTorques = p_upperTorques.get_future();
std::thread t1(&WalkingController::CalculateTorqueForUpperLegs, this, std::move(p_upperTorques));
t1.join();
...std::get<0>(f_upperTorques.get()), std::get<1(f_upperTorques.get())...

我正在调用的函数是

void WalkingController::CalculateTorqueForUpperLegs(std::promise<std::tuple<float, float>> &&p) {
...
p.set_value(std::make_tuple(ullTorque, urlTorque));
}

这是正确的方法吗?

感谢您的帮助。

0 个答案:

没有答案