今天我想使用boost :: scoped_ptr指向boost :: thread。
在我的 Thread.h 中我有boost::scoped_ptr<boost::thread> m_thread
,在我的Thread.cpp中有一个函数create()
,其中应该创建boost :: thread。
我试过Thread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));
,但不出所料,它没有用。
我无法弄清楚自己(或使用boost文档)我将如何做到这一点,因为我不完全了解scoped_ptr发生了什么以及它是如何工作的。 在我以前使用原始指针之前,它工作得很好,但此时我不允许使用它。
谢谢你的时间!
答案 0 :(得分:1)
我不知道你得到了什么样的错误,试试这个:
class Thread {
public:
Thread() : thread_(new boost::thread(boost::bind(&Thread::run, this))) {
}
void run() {
}
~Thread() {
thread_->join();
}
private:
boost::scoped_ptr<boost::thread> thread_;
};
int main() {
Thread thread;
}
但不要忘记,该线程可能会在构造函数结束工作之前开始。