在我的C++程序中,我创建了两个重载函数doSomething()和doSomething(int,int)。我的问题是,当我通过传递(异步,doSomething,a,b)参数来调用异步任务时,编译器会给出“调用异步没有匹配功能”错误。因此,伙计们如何在异步任务下传递两个arg doSomething(int,int)函数。
我的代码:
void doSomething(){ // do some work}
void doSomething(int &a, int &b){ // do some work}
int main(){
int a = 34, b = 44;
auto f = std::async(std::launch::async, doSomething, std::ref(a), std::ref(b));
}
最佳答案
问题在于类型推断为“doSomething”。如果不指定,则将其推导为“void()”,因此您应显式指定要使用的其他函数类型:
auto f = std::async<void(int&,int&)>(std::launch::async, doSomething, std::ref(a), std::ref(b));
关于c++ - 如何解决C++中的异步任务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62512853/