héritage ou pas?

héritage ou pas? - C++ - Programmation

Marsh Posté le 23-11-2004 à 23:51:15    

hi everybody!!
 alors voilà mon souci: j'ai 2 classes que je ne peux pas modifier, ces classes sont CMainMenu et CPrincipalMenu. Je souhaiterais rajouter une méthode dans la classe CPrincipalMenuDerive, classe dérivée de CPrincipalMenu. Comme je ne peux modifier les classes citées précédement, je me suis fait une classe dérivée CPrincipalMenuDerive de CPrincipalMenu.  
voici à quoi tout cela ressemble:

Code :
  1. class CMainmenu: public CIHMMenuContenair
  2. {
  3. //ici on instancie la classe CPrincipalMenu
  4. ... = new CPrincipalMenu(...)
  5. }


 

Code :
  1. class CPrincipalMenu
  2. {
  3. //méthodes
  4. ...
  5. }


 

Code :
  1. //dans CPrincipalMenuDerive.h
  2. class CPrincipalMenuDerive : public CPrincipalMenu
  3. {
  4. //nelle méthode
  5.     virtual void CPrincipalMenuDerive::CB_Menu_treat()
  6. }
  7. //dans CPrincipalMenuDerive.cpp
  8. {
  9. //nelle méthode
  10.     virtual void CB_Menu_treat()
  11.     {
  12.      }
  13. }


mon pb: CPrincipalMenu est instancié dans CMainMenu. En cliquant sur un bouton de l'interface, on passe dans CIHMMenuContenair(lieu des assignations) puis dans CMainMenu avant que les évènements ne soient traités par une des méthodes de CPrincipalMenu. Le bouton ajouté devrait être traité dans la méthode CB_Menu_treat de CPrincipalMenuDerive, virtuelle car déclarée dans CIHMMenuContenair mais on ne passe pas dans cette méthode, et c'est normal vu que cette classe n'et jamais instancié. Comment faire pour résoudre ce pb?
 
merci pour toute info.

Reply

Marsh Posté le 23-11-2004 à 23:51:15   

Reply

Marsh Posté le 24-11-2004 à 00:06:39    

Roob a écrit :

Pourquoi ne peux tu pas modifier les classes de base ?


Probablement parce qu'il les utilises déjà.

Reply

Marsh Posté le 24-11-2004 à 10:04:48    

les classes que je ne dois pas modifier sont en effet déjà utilisées. D'aures suggestions?


Message édité par neonico le 24-11-2004 à 10:07:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed