gpt4 book ai didi

multithreading - boost:thread - 编译器错误

转载 作者:行者123 更新时间:2023-12-02 06:12:34 25 4
gpt4 key购买 nike

我想在我的程序中使用 boost::thread,但出现以下编译器错误 (Visual Studio 2005):

Error   1   **error C2064**: term does not evaluate to a function taking 0
arguments d:\...\boost_1_37_0\boost\thread\detail\thread.hpp 56

因此,我尝试在一个小程序中重现该问题,并修改了来自 this site 的有效 Hello World 示例.

我的测试代码现在看起来像这样。为什么它在类里面不起作用?:

#include <boost/thread.hpp>
#include <iostream>


class HelloWorld
{
public:
void hello();
void entry();
};

void HelloWorld::entry()
{
boost::thread thrd(&HelloWorld::hello);
thrd.join();
}

void HelloWorld::hello()
{
std::cout << "Hello world, I'm a thread!" << std::endl;
}

int main(int argc, char* argv[])
{
HelloWorld *bla = new HelloWorld;
bla->entry();
return 0;
}

最佳答案

像这样尝试 - boost::thread 构造函数期望一个 boost::function0(这是一个函数指针,但由于 this 指针,成员函数指针不是)。

void HelloWorld::entry()
{
boost::thread thrd(boost::bind(&HelloWorld::hello,this));
thrd.join();
}

关于multithreading - boost:thread - 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546319/

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