错误"表达式不能用作函数"在提升线程?

时间:2014-07-26 17:21:30

标签: c++ boost

我在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图书馆,伙计们!

任何想法都将受到赞赏:)

1 个答案:

答案 0 :(得分:3)

我可以reproduce your issue,你的线程声明:

boost::thread *p = new boost::thread("thread1");

无效:构造函数需要可调用(例如函子),而不是string。 您应该查看boost documentation以获取更多信息。

(错误信息实际上非常明确:它告诉你表达式_字符串“thread1”_不可调用)

注意:

如果您的编译器支持C ++ 11,请将std::thread视为boost::thread的替代。