一个类中的boost :: thread

Mat*_*lay 5 c++ boost-thread

我正在尝试创建一个类,在创建时,启动一个后台线程,类似于下面的:

class Test
{
  boost::thread thread_;
  void Process()
  {
    ...
  }

  public:
    Test()
    {
       thread_ = boost::thread(Process);
    }
}
Run Code Online (Sandbox Code Playgroud)

我无法编译,错误是"没有匹配函数调用boost :: thread :: thread(未解析的函数类型)".当我在课外做这件事时,它运作正常.如何让函数指针起作用?

Pab*_*blo 6

你应该初始化thread_为:

Test()
  : thread_( <initialization here, see below> )
{
}
Run Code Online (Sandbox Code Playgroud)

Process是一个非静态类成员的成员Test.你可以:

  • 声明Process为静态.
  • 绑定一个Test实例来调用Process.

如果声明Process为static,则初始化程序应该是

&Test::Process
Run Code Online (Sandbox Code Playgroud)

否则,您可以绑定Test使用Boost.Bind 的实例:

boost::bind(&Test::Process, this)
Run Code Online (Sandbox Code Playgroud)