IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Convertir code C en C++


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut Convertir code C en C++
    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.

  2. #2
    Membre du Club Avatar de Waether
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 44
    Points : 69
    Points
    69
    Par défaut
    Plop !

    Tu semble te méprendre sur le but d'une classe.
    Une classe est soit un objet avec des méthodes permettant d’interagir avec, soit un regroupement de méthodes permettant de produire un objet ou effectuer une action précise.
    Ici tu cherches à récupérer une structure.
    Du coup ta classe doit simplement simplement contenir l'objet ou le produire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int main()
    {
      InitSDL    A;
     
      if (A.init() == true)
          func(A.getStruct()):
      return 0;
    }
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main()
    {
      InitSDL    A;
      Struct     *B;
     
      B = A.init();
      if (B != NULL)
        {
         func(B);
        }
      return 0;
    }
    Pour récupérer ta structure appel juste ta fonction Init_Sdl dans une fonction membre de ta classe.
    Keep calm and debug ...

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par hbx360 Voir le message
    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++
    C'est trivial pourtant

    Le profil de ta fonction (par ordre chronologique)
    1. On crée un objet
    2. On fait des initialisations (SDL_init)
    3. On paramètre cet objet
    4. On retourne le nouvel objet


    C'est simple :
    1. On crée un objet -> Inutile parce que c'est lorsqu'on va créer l'objet que le constructeur va être appelé
    2. On fait des initialisations (SDL_init) -> à déplacer ailleurs, dans le main par exemple
    3. On paramètre cet objet -> On a le corps du constructeur
    4. On retourne le nouvel objet -> Ne sert à rien parce qu'on travaille "dans" le vrai objet (on n'a pas besoin de faire une copie de pointeur)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 431
    Points : 172
    Points
    172
    Par défaut
    Merci beaucoup pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/05/2008, 11h20
  2. Convertir Code C++ en asm
    Par Sharpy dans le forum C++
    Réponses: 7
    Dernier message: 02/11/2007, 23h37
  3. convertir code php en asp
    Par goaim dans le forum ASP
    Réponses: 1
    Dernier message: 19/10/2006, 15h53
  4. Convertir code C en delphi
    Par jt-tronix dans le forum Langage
    Réponses: 12
    Dernier message: 29/03/2006, 20h55
  5. convertir code clavier en caractère
    Par danyboy85 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 22/02/2006, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo