方法重写线程C++中的概念

Method overriding concept in Thread C++

本文关键字:C++ 重写 线程 方法      更新时间:2023-10-16

在我的代码中,有两个方法work((和work(var(,我想在线程下传递该函数,每当我传递其中一个方法时,我都会得到一个错误"初始化std::thread"没有匹配的构造函数;

我的代码:

void work(){ // something do} 
void work(int var){// something do}
int main(){
std::thread myThread_1(work,34); // this line of code give me error

myThread_1.join();
return 0;
}

伙计们,我该怎么解决这个问题?请帮我

不能将重载函数作为参数传递。您需要:

显式转换为所需的重载:

std::thread myThread_1(static_cast<void (*)(int)>(work), 34);

或使用lambda:

std::thread myThread_1([](int var) { work(var); }, 34);
// or better yet:
std::thread myThread_1([] { work(34); });