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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    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 actif Avatar de Waether
    Homme Profil pro
    �tudiant
    Inscrit en
    Mars 2015
    Messages
    44
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 44
    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.

  3. #3
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    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 772
    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 �clair�
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    447
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 447
    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