"pure method called" au test d'un wrapper boost::thread simple
Bonjour,
Je viens de synthétiser mon code en créant une classe Thread comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| class Thread {
protected:
boost::thread *m_thread;
virtual void work() = 0;
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::work, boost::ref(*this)));
}
}; |
Deux classes en héritent publiquement et implémentent la méthode virtuelle work().
En transférant des données de l'une à l'autre (les méthodes work() touchent aux données échangées), je me retrouve avec un runtime terminated à cause d'un appel à une méthode virtuelle pure. Je n'en ai qu'une, cela vient donc de work(), mais pourquoi diable appelleraient-ils Thread::work() au lieu de l'implémentation ?
Edit: Visiblement il y a une affaire de temps derrière... C'est assez aléatoire.
Merci d'avance.
Cordialement,
Kidpaddle2