[POO] Héritage et fonction non implémentée
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 :
Code:
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 |
Puis dans ma DLL, j'ai une fonction register prenant en argument un pointeur sur BaseRenderer :
Code:
1 2 3 4 5
|
DLLEXPORT void register( BaseRenderer* _b )
{
_b->Hello();
} |
que je lance via :
Code:
1 2 3 4 5 6
|
PluginsManager Pm;
.. //Initialisations de Pm;
Pm->register( new BaseRenderer() ); |
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 !!!!!
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