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

时间:2014-11-13 22:28:44

标签: c++ multithreading visual-studio-2012

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

CODE:

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

ERROR GIVEN:

    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

2 个答案:

答案 0 :(得分:1)

Microsoft Visual C ++(2012)不支持可变参数模板。它们有一些名为 faux variadics 的东西,可以通过宏来消除重载。问题是您可以传递给可变参数模板的参数数量有限制,默认情况下该限制为5.您可以通过将_VARIADIC_MAX定义为更大的数字来调整限制(例如,限制10集/D_VARIADIC_MAX=10

请参阅thisthis

答案 1 :(得分:-1)

参数太多,将它们放在一个结构中,并将结构赋予线程函数并处理结构中的args。