Bonjours, j'ai un code en C, que je souhaiterai convertir en C++
Mais j'ai des difficultés à le faire j'ai commencé à le transposé en C++ mais là je ne sais pas comment faire ; voici mon code en C avec .h et .c :
Le .h :
et le .c :
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 #ifndef __INIT_SDL_H__ #define __INIT_SDL_H__ #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <errno.h> #include <string.h> #include <SDL/SDL.h> #include "tools.h" #define WIN_W 640 #define WIN_H 500 #define BPP 8 #define FLAGS SDL_HWSURFACE|SDL_DOUBLEBUF typedef struct InitSdl { int WIN_w; int WIN_h; int bpp; SDL_Surface* screen; }InitSdl; extern InitSdl* Init_Sdl(void); extern int InitSdl_error(void *ptr,char *S); extern void Free_InitSdl(InitSdl *J); #endif
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 #include<stdlib.h> #include<stdio.h> #include<assert.h> #include<SDL/SDL.h> #include"Init_sdl.h" InitSdl* Init_Sdl(void) { /*Struct qui permet donc la création de la Fenêtre SDL*/ InitSdl* J=malloc(sizeof*J); if(SDL_Init(SDL_INIT_VIDEO==-1)) { tools_strerror("SDL_Init failed : %s\n"); atexit(SDL_Quit); } if(WIN_W<=0 || WIN_H<=0 || BPP<=0 || BPP>32) { tools_strerror("In InitSdl.c : Invalid window size or bpp.\n"); atexit(SDL_Quit); } else { J->WIN_w=WIN_W; J->WIN_h=WIN_H; J->bpp=BPP; J->screen=SDL_SetVideoMode(J->WIN_w, J->WIN_h, J->bpp, FLAGS); if(J->screen==NULL) { tools_strerror("SDL_SetVideoMode Failed display window SDL failed: %s\n"); atexit(SDL_Quit); } SDL_WM_SetCaption("Collision",NULL); return J; } } int InitSdl_error(void *ptr,char *S) { if(ptr==NULL) { tools_strerror(S); return -1; } return 0; } void Free_InitSdl(InitSdl *J) { Free_SDL_Surface(J->screen); Free_Alloc(J); atexit(SDL_Quit); }
Maintenant ce que j'ai commencé à faire en C++
Voici le .hpp :
Et le .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 #ifndef INIT_SDL #define INIT_SDL #include <iostream> #include <string> #include <SDL/SDL.h> const int WIN_W=640; const int WIN_H=480; const int BPP=32; const int FLAGS=SDL_HWSURFACE|SDL_DOUBLEBUF; class InitSDL { private : int m_winW ,m_winH, m_bpp, m_flags; SDL_Surface* screen; public : InitSDL(); ~InitSDL(); }; #endif
J'ai plusieurs problèmes d'abord ce que je voulais faire c'était dans mon constructeur en C++ mettre tout le code de la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #include "init_SDL.h" InitSDL::InitSDL() : m_winW(WIN_W), m_winH(WIN_H), m_bpp(BPP), m_flags(FLAGS) {}mais comme cette fonction renvoi une pointeur de type struct InitSdl et que dans le constructeur on ne renvoi rien je bloque je sais pas comment on fait en C++ pour renvoyer une class en pointeur faut-il écrire une autre methode qui renverrai un pointeur de type class si vous pouviez m'aider me donner des pistes pour retranscrire le code en C++ se serait sympa.
Code : Sélectionner tout - Visualiser dans une fenêtre à part extern InitSdl* Init_Sdl(void);
Merci d'avance.
Partager