Implementierung habe ich ein kleines Wrapper, der zentralisieren, was Threads relativ ist:„rein virtuelle Methode namens“, wenn ein boost :: Thread Wrapper-Schnittstelle
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)));
}
};
Als ich es implementieren, sagen mit den folgenden:
class A : public Thread {
void work() {}
};
An:
A a; a.run();
bekam ich eine Laufzeit Beendigung mit einer hübschen „rein virtuellen Methode namens“ displ ayed. Ich denke, es ist das boost :: bind-Argument, aber ich weiß nicht, wie ich sagen soll "Benutze virtuelle reine Implementierung" ...
Danke im Voraus.
Grüße,
Herr Mystère
Nun, das war einfach ... Danke, du hast es deutlich gemacht. Aber jetzt habe ich ein größeres Problem (zufällige Booleans anscheinend ...), und ich denke, es wird viel schwieriger zu debuggen sein. Ich hätte meinen "Joker" einfach nicht dafür benutzen sollen, sonst werde ich bedürftig aussehen ^^ –