所以我想在boost线程中启动成员函数Open()
:
.HPP
Class MyClass{
public:
int Open();
private:
void handle_thread();
};
的.cpp
int MyClass::Open(){
boost::thread t(handle_thread);
t.join();
return 0;
}
void MyClass::handle_thread(){
//do stuff
}
test.cpp
int main(){
MyClass* testObject = new MyClass()
testObject.Open();
}
这会导致编译器错误。
error: no matching function for call to 'boost::thread::thread(<unresolved overloaded function type>)'
我看到Open()不知道调用handle_thread的对象。但我无法弄清楚正确的语法是什么。
答案 0 :(得分:1)
handle_thread
是一个成员函数,必须这样调用:
int MyClass::Open(){
boost::thread t(&MyClass::handle_thread, this);
...
}
请注意,如果您之后立即join
线程,则您的功能将被阻止。除了handle_thread
实际上在不同的线程上运行之外,该行为将与单线程应用程序的行为相同。但是没有线程交错(即没有并行性)。