Bonjour,
Je dispose d'une class abstraite AThread:
La methode start est chargée de lancer le thread.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class AThread { private: bool _started; pthread_t _thread; public: AThread(); virtual ~AThread(); void start(); virtual void callback() = 0; };
La methode callback doit etre implemente par les class qui herite de AThread; celle-ci est la methode que le thread doit appeller.
Pour ce faire, j'ai cree une fonction:
Cette fonction est donc appellee comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 extern "C" { void *thread_func(void *mem) { AThread *obj; obj = static_cast<AThread *>(mem); obj->callback(); return (NULL); } }
Cependant lors d'un appel a la methode start, la methode thread_func appelle la methode callback de l'objet AThread dans tous les cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void AThread::start() { if (!this->_started) { this->_started = true; pthread_create(&this->_thread, NULL, thread_func, this); } }
J'ai essaye de static_cast ver le type reel, de passer la reference du type reel a thread_func mais le resultat reste le meme:
pure virtual method called
terminate called without an active exception
Aborted
Partager