Bonjour,
Je viens de synthétiser mon code en créant une classe Thread comme suit :
Deux classes en héritent publiquement et implémentent la méthode virtuelle work().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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))); } };
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
Partager