Partage
  • Partager sur Facebook
  • Partager sur Twitter

inclure ma propre classe

    12 juin 2008 à 17:54:15

    Bonjour à tous !

    Voilà, j'ai construit ma propre classe qui affiche une fenetre en SDL !
    En fait dans main(), maintenant j'ai juste à tapper cette ligne pour afficher ma fenetre :

    int main( int argc, int argv[] )
    {

    AffichageFenetre maFenetre( "titre de la fenetre", 640, 480, true );

    return 0;
    }

    Mon problème c'est pour la directive #include <AffichageFenetre/ouvrirFenetre.h>
    ca ne fonctionne pas, alors que j'ai bien inclus le fichier h dans le dossier include de visual c++ express
    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2008 à 18:10:06

      Montre nous tout ton code, si tu veut de l'aide.
      • Partager sur Facebook
      • Partager sur Twitter
      FaQ : Fr | En 1 2 | C++11 | Template || Blog : Deloget | C++|Boost--Dev | C++Next | GotW || Installer Boost
        12 juin 2008 à 18:12:38

        #include <AffichageFenetre/ouvrirFenetre.h>
        n'est pas une bonne idée

        utilise plutot

        #include "AffichageFenetre/ouvrirFenetre.h" (avec des "" et non des <>) et mets ton fichier .h dans ton projet.
        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2008 à 18:15:15

          Bonjour, voici mon code :

          #include <SDL/SDL.h>
          #include <stdlib.h>
          #include <stdio.h>

          class AffichageFenetre
          {
          public:
          AffichageFenetre( char *titre, int largeur, int hauteur, bool pleinEcran = false );
          ~AffichageFenetre();
          int pause( SDL_Surface &ecran);


          private:
          SDL_Surface *ecran;
          SDL_Event event; // Pour les évènements
          bool continuer;
          }; // Pour la Classe


          // Et pour les fonctions membres
          #include "ouvrirFenetre.h"


          AffichageFenetre::AffichageFenetre( char *titre, int largeur, int hauteur, bool pleinEcran )
          {
          SDL_Surface *ecran = 0;
          bool continuer = true;

          SDL_Init ( SDL_INIT_EVERYTHING ); // Initialise le mode video.

          ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF ); // Taille
          SDL_WM_SetCaption( titre, NULL ); // Rajoute un titre

          SDL_FillRect( ecran, NULL, SDL_MapRGB( ecran->format, 255, 255, 255 ));

          if( pleinEcran == true ) // Si l'utilisateur décide de mettre true, on active le plein écran
          ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN );

          pause( *ecran );

          }

          AffichageFenetre::~AffichageFenetre()
          {

          SDL_Quit(); // Ferme la SDL

          }


          int AffichageFenetre::pause(SDL_Surface &ecran)
          {


          while(continuer)
          {
          SDL_WaitEvent(&event);
          switch(event.type)
          {
          case SDL_QUIT:
          continuer = false;
          break;
          case SDL_KEYDOWN: // Si une touche est enfoncée
          switch (event.key.keysym.sym ) // On récupère la touche
          {
          case SDLK_ESCAPE: // Si c'est la touche ECHAP
          continuer = false;
          break;

          }
          }


          SDL_Flip(&ecran); // Mise à jour de l'écran

          }



          SDL_FreeSurface( &ecran );
          return EXIT_SUCCESS;
          }
          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2008 à 18:25:45

            Ouais, il y a aussi marquer qu'on doit étre poli, ce n'est pas trop ton cas !

            sinon ca ne marche pas avec #include "AffichageFenetre/ouvrirFenetre.h"
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2008 à 18:43:10

              mets les balises cpp à ton code stp là c'est illisible...
              • Partager sur Facebook
              • Partager sur Twitter
                12 juin 2008 à 19:09:15

                bonjour, voila :

                // Correspond a ma classe

                #ifndef OUVRIRFENETRE_H
                #define OUVRIRFENETRE_H


                #include <SDL/SDL.h>
                #include <stdlib.h>
                #include <stdio.h>

                class AffichageFenetre
                {
                public:
                AffichageFenetre( char *titre, int largeur = 640, int hauteur = 480, bool pleinEcran = false );
                ~AffichageFenetre();
                int pause( SDL_Surface &ecran);


                private:
                SDL_Surface *ecran;
                SDL_Event event; // Pour les évènements
                bool continuer;
                };

                #endif



                // Et la les définitions .cpp

                #include "ouvrirFenetre.h"


                AffichageFenetre::AffichageFenetre( char *titre, int largeur, int hauteur, bool pleinEcran ) // Constructeur
                {
                SDL_Surface *ecran = 0;
                bool continuer = true;

                SDL_Init ( SDL_INIT_EVERYTHING ); // Initialise le mode video.

                ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF ); // Taille
                SDL_WM_SetCaption( titre , NULL ); // Rajoute un titre

                SDL_FillRect( ecran, NULL, SDL_MapRGB( ecran->format, 255, 255, 255 ));

                if( pleinEcran == true ) // Si l'utilisateur décide de mettre true, on active le plein écran
                ecran = SDL_SetVideoMode( largeur, hauteur, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN );

                pause( *ecran );

                }

                AffichageFenetre::~AffichageFenetre() // Destructeur
                {

                SDL_Quit(); // Ferme la SDL

                }


                int AffichageFenetre::pause(SDL_Surface &ecran)
                {






                while(continuer)
                {
                SDL_WaitEvent(&event);
                switch(event.type)
                {
                case SDL_QUIT:
                continuer = false;
                break;
                case SDL_KEYDOWN: // Si une touche est enfoncée
                switch (event.key.keysym.sym ) // On récupère la touche
                {
                case SDLK_ESCAPE: // Si c'est la touche ECHAP
                continuer = false;
                break;

                }
                }


                SDL_Flip(&ecran); // Mise à jour de l'écran

                }



                SDL_FreeSurface( &ecran );
                return EXIT_SUCCESS;
                }


                Voila je suis désolé, mais avec les balises j'arrive pas à comprendre.
                j'ai fait au mieux.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 juin 2008 à 20:58:08

                  entoure ton code par la balise <code type="cpp"> </ code> (Et enlève l'espace entre / et c (de code )) ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 juin 2008 à 15:40:26

                    je ne connais pas VC++ mais a mon avis c'est comme C::B
                    tu as mis ton fichier dans le dossier include de l'IDE ou du compilateur ?
                    sinon indente ton code
                    • Partager sur Facebook
                    • Partager sur Twitter

                    inclure ma propre classe

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown