Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mettre une chaîne de caractères en paramètre d'une fonction

dans un programme en SDL

Sujet résolu
    23 août 2007 à 16:04:16

    Bonjour à tous,
    voilà j'ai un petit soucis dans mon programme, j'aimerai passer le chemin d'une image en paramètre afin de pouvoir la charger en utilisant
    1. SDL_IMGLoad(chemin);


    Mais voilà IMG_Load ne peut prendre que char* en paramètre(aurevoir string :( ).
    J'ai donc écrit cette fonction:
    1. bool Arme::init(char *gauche, char *droite)
    2. {
    3.     sprites[0] = IMG_Load(gauche);
    4.     sprites[1] = IMG_Load(droite);
    5. }


    que j'appelle ainsi:
    1. arme[0]->init("Images\\Sprites\\zero_gauche.png", "Images\\Sprites\\zero_droite.png");


    et quand je compile me voilà avec mon message préféré de Windows, et je pense que c'est pareil pour tout le monde, qui est "Projet.exe a rencontré un problème et doit fermer".
    Me voilà donc à lancer un debuggage et boom!!! cerise sur le gâteau, me voilà avec une Erreur de segmentation !!! :euh:

    J'ai donc retourner mon code pour voir le problème, je ne vois qu'une chose, d'ailleur ça ne m'etonnerai pas ça à toujours été mon pote ce sacré char* :p

    Vous pourriez me donnez un coup de main please ?
    • Partager sur Facebook
    • Partager sur Twitter
      23 août 2007 à 16:10:55

      Utilises la fonction .c_str() de la classe string.

      1. string maChaine;
      2. char* maChaineTypeC = maChaine.c_str();
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        23 août 2007 à 16:22:27

        Je te remercie ça fonctionne bien maintenant
        • Partager sur Facebook
        • Partager sur Twitter
          23 août 2007 à 16:32:15

          Je sais pas si je vais dire une connerie mais ton code me semble vraiment bizarre ici
          1. "Images\\Sprites\\zero_gauche.png", "Images\\Sprites\\zero_droite.png"


          Moi je fais ça

          1. cursor01 = SDL_LoadBMP("System/01/Menu/Cursor_Curs01.bmp");


          Et ça amrche très bien, le problème venait peut être de là. En tout cas ça me turlipinne lol
          • Partager sur Facebook
          • Partager sur Twitter
            24 août 2007 à 11:48:10

            Oui ça m'a paru bizarre de faire ça mais l'explication en fait c'est que je programme actuellement sous Windows et donc les chemins sous windows se font avec '\' or on sait qu'en programmation l'antislash utilisé entre guillemets permet de protéger un caractère de son sens original et donc lorsque j'utilisais un antislash simple genre "Images\fond.png", le programme comprenais "Imagesfond.png".
            En mettant "Images\\fond.png" comme '\' protège un caractère de son sens le premier protège le deuxième de son sens et donc le programme comprend "Images\fond.png" voilà.
            Et en fait, je ne comprend pas pourquoi tu utilise "System/01/Menu/Cursor_Curs01.bmp".
            • Partager sur Facebook
            • Partager sur Twitter
              24 août 2007 à 12:16:33

              J'ai toujours utilisé les slashs et non les anti-slashs ;) (comme pour tes includes par exemple)
              • Partager sur Facebook
              • Partager sur Twitter

              Mettre une chaîne de caractères en paramètre d'une fonction

              × 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