Bonjour tout le monde,
Je suis encore débutant en C++, et j'aurais aimé apprendre plus sur le comportement du destructeur dans la libération de la mémoire, mais d'abord voici le code avec lequel je pratique :
Fenetre.h:
Fenetre.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #ifndef FENETRE_H #define FENETRE_H class Fenetre { public: Fenetre(); Fenetre(int width, int height, int x, int y); /******************************************************/ void launch(); /******************************************************/ virtual ~Fenetre(); protected : void terminate(); private: /******************************************************/ SDL_Window* window; SDL_Renderer* renderer; SDL_Event event; bool isRunning; int F_Width; int F_Height; int F_PosX; int F_PosY; /******************************************************/ }; #endif // FENETRE_H
et pour finir le Main.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 #include <SDL2/SDL.h> #include "Fenetre.h" #include <iostream> Fenetre::Fenetre() : F_Width (640),F_Height(480),F_PosX(0),F_PosY(0),isRunning(false) { SDL_Init(SDL_INIT_EVERYTHING); window = SDL_CreateWindow("Test" ,SDL_WINDOWPOS_CENTERED ,SDL_WINDOWPOS_CENTERED ,F_Width ,F_Height ,0); renderer = SDL_CreateRenderer(window, -1, 0 ); } Fenetre::Fenetre(int width = 640, int height = 480,int x = 200, int y = 100) { F_Width = width; F_Height = height; F_PosX = x; F_PosY = y; isRunning = false; SDL_Init(SDL_INIT_EVERYTHING); window = SDL_CreateWindow("Test" ,F_PosX ,F_PosY ,F_Width ,F_Height ,0); renderer = SDL_CreateRenderer(window, -1, 0 ); } void Fenetre::launch() { isRunning = true; while(isRunning){ while (SDL_PollEvent( &event )){ if (event.type == SDL_QUIT){ isRunning = false; } /**UPDATE THE CONTENT**/ std::cout << "Updated !" << std::endl; } } terminate(); } void Fenetre::terminate() { std::cout << "Suppression du render et window" << std::endl; SDL_DestroyRenderer(renderer); SDL_DestroyWindow(window); } Fenetre::~Fenetre(){std::cout << "Suppression de l'objet" << std::endl;}
Remarque : j'utilise Code::Blocks !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <SDL2/SDL.h> #include <iostream> #include "Fenetre.h" int main(int argc, char* argv[]){ Fenetre * maFenetre = new Fenetre(800,600,10,10); maFenetre->launch(); delete maFenetre; return 0; }
Pour mes questions :
-Est-ce que le destructeur fait son rôle ici, même s'il n'y a rien à l'intérieur ?
-Est-ce que je suis une structure correcte dans mon code ?
S'il y a d'autres remarques je serais heureux de les connaitre (bonnes ou mauvaises), Merci !
Partager