[résolu][poo/c++] héritage, constructeur et destructeurs

héritage, constructeur et destructeurs [résolu][poo/c++] - Programmation

Marsh Posté le 28-08-2002 à 21:33:23    

je fais une classe opengl d'utilitaires  que je dérive pour ma classe de jeu, l'idée  étant plusd'utiliser les popriétées exitantes de la classe meres que de dériver....  
 
j'ai donc

Code :
  1. class opengl
  2. {
  3. public:
  4. opengl(HDC MonDC)
  5. {GetDC (trucmuche) // fonctions classiques d'initialisation d'opengl
  6. }
  7. ~opengl()
  8. {ReleaseDC(trucmuche) ;//fonctions classiques de fermetrure opengl
  9. }
  10. void AfficherCube( int X , int Y,TPiece Piece) //primitive utilse pour mon jeu
  11. };
  12. class cTetris: public opengl {
  13. public:
  14. cTetris() //fonctions d'initialisation ;-)
  15. ~cTetris();
  16. };


 
comment faire, si possible, pour qu'a la création de mon objet Tetris = new cTetris(Handle);
 
d'abord le constructeur de la classe mere soit appelé,avec le parametre, pusi el constructeur de la classe fille, sans parametres
 
et a la destruction d'abord le destructeur de la fille puis celui de la mere ?
 
(si possible)


Message édité par farib le 31-08-2002 à 12:54:26
Reply

Marsh Posté le 28-08-2002 à 21:33:23   

Reply

Marsh Posté le 28-08-2002 à 22:25:12    

c'est tout simple tu utilise les listes d'initialisation !
 
@++


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

Marsh Posté le 28-08-2002 à 22:42:21    

Ben de toute façon, l'appel des constructeurs se fait normalement dans l'ordre de la hiérarchie de tes classes :
 
cTetris::cTetris(HDC Handle)
 : opengl(Handle)
{
...
}
 
Pour le destructeur, c'est pareil, les appels aux destructeurs se font dans l'ordre inverse de la hiérarchie de tes classes. Donc d'abord la classe fille, puis la classe mère.

Reply

Marsh Posté le 28-08-2002 à 22:52:14    

pour le parametre, si je fais new cTetris(Handle), ca marchera nickel ?

Reply

Marsh Posté le 31-08-2002 à 12:32:20    

ca y est, je usis confronté au prob
 
constructeur de cOpenGl :
 
cOpenGl(void * Handle);
 
le constructeur de cTetris, classe dérivée de cOpenGl, n'a lui pas besoin de parametres
 
masi comment appeler les bons constructeurs, c'est à dire les deux constructeurs ?
d'abord
 
cOpenGl(Handle);
puis  
cTetris();
 avec éventuellement des paramtres si vous me dites qu'il en faut pour que le compilateur s'y retrouve
 
acutellement, bcp n'arrive pas, il dit impossible de trouver un constructeur par défaut
 
 
 
soluce :
cTetris::cTetris(void * Handle) : cOpengl(Handle)


Message édité par farib le 31-08-2002 à 12:55:12
Reply

Sujets relatifs:

Leave a Replay

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