Mam małe opakowanie, które centralizacji, co w stosunku do wątków:„czysta wirtualna metoda nazywa się” przy wdrażaniu Boost :: wątek interfejs otoki
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)));
}
};
Kiedy wdrożyć go, powiedzieć, co następuje:
class A : public Thread {
void work() {}
};
w:
A a; a.run();
dostałem wypowiedzenie wykonania z dość „czystego metoda wirtualna nazwie” displ ayed. Myślę, że to argument boost :: bind, ale nie wiem, jak powiedzieć "Użyj wirtualnej czystej implementacji" ...
Dzięki temu.
Pozdrawiam,
Mister Mystere
Cóż, to było proste ... Dzięki, wyjaśniłeś. Ale teraz mam większy problem (przypadkowo booleans najwyraźniej ...) i myślę, że będzie trudniej debugować. Po prostu nie powinienem używać mojego "jokera" tutaj, w przeciwnym razie będę wyglądał na potrzebującego ^^ " –