Bonjour,
Je rencontre un problème avec l'héritage, et j'avoue qu'il me dépasse complétement. La situation est très simple : j'ai trois classes appellées PluginsManager, BaseRenderer, et Dummy. Elles sont définies comme suit :
Puis dans ma DLL, j'ai une fonction register prenant en argument un pointeur sur BaseRenderer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class PluginsManager {...}; //pour les dll class BaseRenderer : public PluginsManager {... void Hello() { MessageBox(NULL,"Hello","Ici",0);} }; class Dummy : public PluginsManager { }; //diverses fonctions, mais PAS Hello
que je lance via :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 DLLEXPORT void register( BaseRenderer* _b ) { _b->Hello(); }
Ca fonctionne parfaitement. Mais le problème, c'est que ça fonctionne tout autant si je remplace new BaseRenderer() par new Dummy(), alors que Dummy ne connaît pas du tout de méthode Hello !!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PluginsManager Pm; .. //Initialisations de Pm; Pm->register( new BaseRenderer() );
Qu'est-ce qui se passe? Pourquoi est ce que ça fonctionne encore?!
D'une manière générale, est-ce que l'héritage est bien la technique à utiliser dans cette situation? Si non, que proposez-vous?
Merci
Cordialement
Partager