1DProgram FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC143532215includethread5514 error C2672 invoke 未找到匹配的重载函数1DProgram FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC143532215includetype
该错误的原因是std::thread::_Invoke函数调用了std::invoke函数,但是std::invoke函数没有匹配到对应的重载函数。这可能是由于函数模板参数类型不正确导致的。
要解决这个问题,需要确保函数模板参数类型正确。在上述代码中,函数模板参数类型可能存在问题,例如:
void video_IR_frame_acquisition(promise
void video_VIS_frame_acquisition(promise
这里的promise
同时,需要确保使用std::ref函数将promise对象引用传递给线程函数,以确保线程函数能够访问到正确的promise对象。
修改后的代码如下:
void video_IR_frame_acquisition(promise<Mat*>& promiseObj) { // ... }
void video_VIS_frame_acquisition(promise<Mat*>& promiseObj) { // ... }
int main() { promise<Mat*> IR_promiseObj; promise<Mat*> VIS_promiseObj;
thread IR_thread(video_IR_frame_acquisition, std::ref(IR_promiseObj));
thread VIS_thread(video_VIS_frame_acquisition, std::ref(VIS_promiseObj));
Mat* IRDIF_frame_ptr;
Mat* VISDIF_frame_ptr;
while (true) {
// 获取 IRDIF_frame
IRDIF_frame_ptr = IR_promiseObj.get_future().get();
// 获取 VISDIF_frame
VISDIF_frame_ptr = VIS_promiseObj.get_future().get();
// ...
}
IR_thread.join();
VIS_thread.join();
return 0;
原文地址: https://www.cveoy.top/t/topic/fnKr 著作权归作者所有。请勿转载和采集!