gpt4 book ai didi

c++ - Boost::thread thread() 不接受参数

转载 作者:太空狗 更新时间:2023-10-29 21:42:02 24 4
gpt4 key购买 nike

IDE 向我提示线程不包含我传递给它的参数数量。这是因为他们太多了,我相信......

我在使用线程标准库时遇到了同样的问题,但为了兼容性问题,我需要使用 Boost::threads。 HERE是指向我之前的问题的链接,其中有人解释说问题是由 veriadic 模板引起的。

这确实是问题所在,但是,在切换到 boost 线程后,错误又回来了,更改 veriadic max 并没有解决它。

这是我的线程声明

boost::thread db(writeToDB, coordString, time, std::to_string(id), imageName, azimuth, att_pitch, att_roll, yaw, cam_pitch, cam_roll);

编辑:

这是我尝试绑定(bind)函数的方式:

boost::thread db(boost::bind(::writeToDB, coordString, time, std::to_string(id), imageName, azimuth, att_pitch, att_roll, yaw, cam_pitch, cam_roll));

目前的IDE是Visual Studio 2013,但是需要兼容Visual Studio 2008

这也是我收到的实际错误:

错误:

错误 6 错误 C2661:“boost::thread::thread”:没有重载函数需要 11 个参数 c:\users\hewittjc\desktop\final project\project1\clientexample.cpp 174 1 Project1

最佳答案

Boost.Thread(内部利用 Boost.Bind 来绑定(bind)参数)仅支持一些固定数量的参数(doc):

Thread Constructor with arguments

template <class F,class A1,class A2,...>
thread(F f,A1 a1,A2 a2,...);

Preconditions:

F and each An must be copyable or movable.

Effects:

As if thread(boost::bind(f,a1,a2,...)). Consequently, f and each an are copied into internal storage for access by the new thread.

Postconditions:

*this refers to the newly created thread of execution.

Throws:

boost::thread_resource_error if an error occurs.

Error Conditions:

resource_unavailable_try_again : the system lacked the necessary resources to create an- other thread, or the system-imposed limit on the number of threads in a process would be exceeded.

Note:

Currently up to nine additional arguments a1 to a9 can be specified in addition to the function f.

显然,这意味着传递 11 个参数(就像您所做的那样)一定会导致您看到的错误:“没有重载函数需要 11 个参数”

不幸的是,没有简单的方法来扩展限制。可能的解决方案是:

  • 减少参数总数(您只超出限制一个)

  • 使用其他库来绑定(bind)参数,例如 Boost.Phoenix

  • 将参数包装在类类型变量中(或至少其中一些)

  • 在完全支持可变参数模板 的 C++11 编译器上切换到 std::thread

关于c++ - Boost::thread thread() 不接受参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27388068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com