Bonjour

je rencontre un problème étonnant ...

voici le principe que j'ai, avec 3 logiciels :
  • une librairie static qui contient
    • un interface IThread avec deux méthodes virtuelles pures
      • start
      • stop
    • Thread qui dérive de IThread et implémente les deux méthodes (start et stop)
  • une librairie shared qui contient un objet Alpha qui dérive Thread
  • un logiciel exécutable Main qui charge avec dlopen la librairie shared et instancie l'objet Alpha sous sa forme IThread

(il va de soit que toutes ces librairies sont référencées et linkées correctement pour que cela puisse se compiler et s’exécuter sans problème)

si j'ai redéfini les méthodes start et stop dans l'objet Alpha comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
virtual bool start() {
		printf("[libYYYY::Alpha] : start \n");
		return Thread::start();
	}
	virtual bool stop() {
		printf("[libYYYY::Alpha] : stop \n");
		return true;
	}
et que dans Main j'appel le start() sur IThread tout marche bien

si par contre je commente la fonction start() et que je ne change pas le code d'appel de Main
ça appel le stop() ... et pas le start() du parent c'est a dire celui du Thread, comme s'il ne pouvait résoudre le polymorphisme ...

si vous aviez quelques pistes ça intéresserait beaucoup ....

Merci