我收到错误说
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));
}
这是正确的方法吗?
感谢您的帮助。