我想创建一个新的线程来运行一个函数,但是当我编译终端时会显示以下错误信息:
g++ -o main.o -c main.cpp -O0 -g -Wall -fmessage-length=0 -D__STDC_CONSTANT_MACROS -std=gnu++0x -lboost_filesystem -lboost_log_setup -lboost_log -lboost_chrono -lboost_thread -lz -lpthread -ldl -lm
main.cpp: In function ‘int main(int, char**)’:
main.cpp:35:13: error: statement cannot resolve address of overloaded function
make: *** [main.o] Error 1
我不能给你我的全部代码,因为如果我在里面包含代码,stackoverflow拒绝发布消息。 这是一个示例:
void foo();
boost::thread t(foo);
任何帮助都会受到赞赏。感谢
答案 0 :(得分:0)
除非它是静态方法,否则你需要使用bind()(无论何时启动非静态方法都需要bind())。
示例:
class Worker {
int returnValue_;
public:
inline void Run() {
//...
boost::this_thread::sleep(boost::posix_time::seconds(2));
returnValue_ = 3;
}
inline int getValue() const {
return returnValue_;
}
};
Worker worker;
boost::thread th (boost::bind(&Worker::Run, &worker));