我在OpenSUSE和Boost 1.55上使用QT-Creator。所有需要的二进制文件都已构建完毕。
程序很容易测试Boost线程是否正常运行。只声明一个帖子。
构建程序时出现以下错误
/home/esys/Documents/Boost/headers/boost/thread/detail/thread.hpp:117: error: expression cannot be used as a function
f();
^
在thread.hpp中的看起来像这样:
void run()
{
f();// line 117
}
private:
F f;
};
我对此很困惑,因为问题似乎是标题本身的代码而不是构建设置的东西!
如何解决这个问题?当然我可以换成另一个Boost版本,但我对这个错误很好奇。这是伟大的Boost图书馆,伙计们!
任何想法都将受到赞赏:)
答案 0 :(得分:3)
我可以reproduce your issue,你的线程声明:
boost::thread *p = new boost::thread("thread1");
无效:构造函数需要可调用(例如函子),而不是string
。
您应该查看boost documentation以获取更多信息。
(错误信息实际上非常明确:它告诉你表达式_字符串“thread1”_不可调用)
注意:强>
如果您的编译器支持C ++ 11,请将std::thread
视为boost::thread
的替代。