无法将参数传递给线程函数

Can't pass arguments to thread function

本文关键字:线程 函数 参数传递      更新时间:2023-10-16

好的,我正在尝试在 c++ 中创建一个线程来运行该函数storePose();该函数将九个参数作为双精度。每次我尝试创建线程时,它都会抱怨参数。我将在下面发布我的代码。我不知道为什么这行不通。提前致谢

法典:

std::thread t(storePose,x_position, y_position, z_position, azimuth, att_pitch, att_roll, yaw, cam_pitch, cam_roll);
    t.detach();

给出的错误:

    12  IntelliSense: no instance of constructor "std::thread::thread" matches the argument list
        argument types are: (<unknown-type>, double, double, double, double, double, double, double, double, double)

编辑:对不起,我忘了提到我正在使用Visual Studio 2012

Microsoft Visual C++ (2012) 不支持可变参数模板。他们有一种叫做人造变频器的东西,它通过宏消除过载。问题是可以传递给可变参数模板的参数数量有限制,默认情况下该限制为 5。您可以通过将_VARIADIC_MAX定义为较大的数字来调整限制(例如,对于 10 个设置的限制/D_VARIADIC_MAX=10

看到这个和这个。

参数

太多,将它们放在结构中,并将结构提供给线程函数并处理结构中的参数。