C ++线程“未找到匹配的重载函数”

ita玉10000:
#include <thread>

void f(int*& ptr)
{
    ptr = new int[4];
    ptr[0] = 0;
    ptr[1] = 1;
    ptr[2] = 2;
    ptr[3] = 3;
}

int main()
{
    int* ptr;

    std::thread thread{ f, ptr };
    thread.join();

    delete[] ptr;
    return 0;
}

我不明白我在想什么。我尝试了引用或非引用的不同组合,请检查我是否具有与文档中相同的格式。没有。我仍然收到此错误:

Error C2672: 'std::invoke': no matching overloaded function found
舒尔特克:

问题在于您的函数f引用了一个指针。但是,线程无法存储引用参数供以后调用,因此您必须使用指向指针的指针代替。

#include <thread>

void f(int** ptr)
{
    *ptr = new int[4];
    *ptr[0] = 0;
    *ptr[1] = 1;
    *ptr[2] = 2;
    *ptr[3] = 3;
}

int main()
{
    int* ptr;

    std::thread thread{f, &ptr};
    thread.join();

    delete[] ptr;
    return 0;
}

注意:您可以使用以下更漂亮的方式初始化数组:

*ptr = new int[] {0, 1, 2, 3};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++:创建线程中的问题;错误C2672:'std :: invoke':找不到匹配的重载函数

GLSL“未找到匹配的重载函数”(hsv2rgb)

C ++模板专业化,但未找到匹配项

OpenGL ES3:未找到packUnorm2x16的匹配重载函数

c ++模板-多个重载函数实例与参数列表匹配

c++ 多个重载函数实例匹配参数类型

Xpath 以()函数结束 - 未找到匹配项

使用着色器材质的standardMaterial。USE_MAP突然停止工作,“ maptexelToLinear;未找到匹配的重载函数”

未找到重载成员

在Windows上使用ctypes在python中包装c ++函数:未找到函数

C + +成员函数重载&(&)

函数重载C ++指针

模板函数重载C ++

函数重载C ++?

C ++线程-没有匹配的函数来调用

线程C ++:没有用于调用的匹配函数

C#CS1502:最佳重载匹配未在文档中找到正确的功能

C ++函数重载(函数多态)

C++ 线程没有重载函数需要 X 个参数

错误C3861:即使标头中有函数也未找到“解密”

C#:“函数”没有重载匹配委托 System.Threading.WaitCallBack

C ++创建头文件时,多个重载函数实例与参数列表匹配

映射中的C ++结构作为值-错误“没有重载函数的实例与参数列表匹配”

C++ 模板 - 找不到匹配的重载函数,无法推导出“T”的模板参数

C ++和SFML,没有重载函数“ sf :: RenderWindow.draw()”的实例与参数列表匹配

c ++ getline()错误,没有重载函数“ getline”的实例与参数列表匹配

C ++ 11-将成员函数传递给线程会给出:没有重载函数需要2个参数

C ++重载异常的构造函数

C ++'WinMain':函数不能重载