私はスレッドに関連するものを一元化する小さなラッパーを持っています:
class Thread {
protected:
boost::thread *m_thread;
virtual void work() = 0;
void do_work() {
work();
}
public:
Thread() : m_thread(NULL) {}
virtual ~Thread() {
catch_up();
delete m_thread;
}
inline void catch_up() {
if(m_thread != NULL) {
m_thread->join();
}
}
void run() {
m_thread = new boost::thread(boost::bind(&Thread::do_work, boost::ref(*this)));
}
};
私がそれを実装するとき、次のように言います:
class A : public Thread {
void work() {}
};
で :
A a; a.run();
かなりの「純粋仮想メソッドと呼ばれる」が表示されたランタイム終了が発生しました。これはboost::bind引数だと思いますが、「仮想の純粋な実装を使用する」と言う方法がわかりません...
よろしくお願いします。
よろしく、
ミスターミステール