Can';t将参数传递给线程函数 >我想在C++中运行一个线程,运行函数 StutePosie();代码>该函数将九个参数作为双参数。每次我尝试创建线程时,它都会抱怨参数。我将在下面发布我的代码。我不知道为什么这行不通。提前谢谢
代码:Can';t将参数传递给线程函数 >我想在C++中运行一个线程,运行函数 StutePosie();代码>该函数将九个参数作为双参数。每次我尝试创建线程时,它都会抱怨参数。我将在下面发布我的代码。我不知道为什么这行不通。提前谢谢,c++,multithreading,visual-studio-2012,C++,Multithreading,Visual Studio 2012,代码: 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 argumen
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)
给出错误:
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)
12 IntelliSense:构造函数“std::thread::thread”的实例与参数列表不匹配
参数类型为:(,double,double,double,double,double,double,double,double)
编辑:
对不起,我忘了提到我使用Visual Studio 2012 < P>参数太多,把它们放在一个结构中,并把这个结构交给线程函数,并处理结构中的ARG。 < P>微软Visual C++(2012)对可变模板没有支持。它们有一种叫做伪变量的东西,可以通过宏消除重载。问题是,可以传递给可变模板的参数数量有一个限制,默认情况下限制为5。您可以通过将
\u VARIADIC\u MAX
定义为一个较大的数字来调整限制(例如,对于设置为10的限制/D\u VARIADIC\u MAX=10
)
请参阅和。我将尝试此操作,但我确实尝试将参数放入向量中,只是重载了函数,但它仍然给了我一个非常类似的错误storePos函数的签名是否与给定的参数匹配?是的,函数在我的标题中声明为:
void storePose(双横、双纵、双纵、双纵、双横、双纵、双横、双横、双横、双横、双横);
它是无效的存储姿势(矢量参数)
当我尝试这样做时,谢谢,这可能会帮助我,我应该把它放在哪里设置?对不起,我是这种编程的新手。在解决方案资源管理器中右键单击您的项目。选择属性…并导航到C/C++->预处理器,然后将add _VARIADIC_MAX=10设置为“预处理器定义”。确保对项目的所有配置(调试、发布等)都这样做非常感谢。我已经花了几个小时来处理这个问题,这对我来说有点太高了!再次非常感谢,我不知道如果我能得到一个好的答案,为什么它会被否决两次!谢谢!如果你不介意看我的新版本,我在切换到Boost线程后再次出现这个错误。'Intellisense'什么?请您至少指定您的实际IDE好吗?对不起,是Visual Studio 2012