我在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库,伙计!
任何想法,将不胜感激 :)
最佳答案
我可以reproduce your issue,您的线程的声明:
boost::thread *p = new boost::thread("thread1");
无效:构造函数需要可调用的对象(例如函子),而不是
string
。您应该查看boost documentation以获得更多信息。
(错误消息实际上非常明确:它告诉您表达式_字符串“ thread1” _是不可调用的)
注意:
如果您的编译器支持C ++ 11,请考虑使用
std::thread
作为boost::thread
的替代方案。关于c++ - Boost线程中出现错误“无法将表达式用作函数”吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24973592/