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 :

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
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
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 :

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
Et le .cpp :

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)
{}
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
extern InitSdl* Init_Sdl(void);
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.

Merci d'avance.