我正在尝试创建一个类,在创建时,启动一个后台线程,类似于下面的:
class Test
{
boost::thread thread_;
void Process()
{
...
}
public:
Test()
{
thread_ = boost::thread(Process);
}
}
Run Code Online (Sandbox Code Playgroud)
我无法编译,错误是"没有匹配函数调用boost :: thread :: thread(未解析的函数类型)".当我在课外做这件事时,它运作正常.如何让函数指针起作用?
你应该初始化thread_为:
Test()
: thread_( <initialization here, see below> )
{
}
Run Code Online (Sandbox Code Playgroud)
Process是一个非静态类成员的成员Test.你可以:
Process为静态.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)
| 归档时间: |
|
| 查看次数: |
5498 次 |
| 最近记录: |