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

SDL Discussion :

Problème de 'blittage' avec la SDL


Sujet :

SDL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut Problème de 'blittage' avec la SDL
    Bonjour à tous,

    j'ai un petit problème et je ne vois vraiment pas où ce situe le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <sstream> // lib pour la convertion de int en string
    #include <string> // lib pour la gestion des string
    ...
     
    for(int i = 0 ; i < obj.size() ; ++i)
    {
       ostringstream s ;
       s << i ; // convertion : int to string
     
       string link = "img/png/dec" + s.str() + ".png" ; // string du lien
       dec[i].img = IMG_Load(link); 
       SDL_BlitSurface(dec[i].img, NULL, screen, &dec[i].pos);
    }
    le compilo me dit qu'il y a un erreur lorsque je fais le load ... mais pourquoi ? C'est bien une string, les liens relatif que je lui ai passé en argument (en l'occurrence 'link') ! non ?

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    bonjour,

    vous pouvez nous donner plus de code et l'erreur du compilateur? (notamment l'initialisation de dec, de SDL, l'inclusion de SDL.h et SDL_image.h)

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    SDL est une API C, faut pas s'attendre à ce qu'elle comprenne un std::string du C++.

    Si tu avais lu 2 sec la documentation de la fonction que tu utilises, tu aurais vu qu'elle attend un const char* :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dec[i].img = IMG_Load(link.c_str());
    Voilou

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Merci Laurent d'avoir déplacer mon topic, j'ai tellement l'habitude de poster dans la section c++ que j'ai pas pensé à voir s'il y avait une section plus adapter.

    Bon pour finir j'ai décidé de contourner le problème parce que j'avais des problèmes pour donner une adresse à mon pointeur avec un somme de string ... et ça va tout autant bien et je dirais que c'est même plus propre.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Qu'est-ce qui ne va pas dans l'utilisation de c_str() ? Qu'est-ce que tu as fait à la place ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2005
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Pour finir j'ai inséré le pointeur dans la class qui est le type de mon vector. Le compilo m'affiche (et m'affichait) l'erreur suivante pour le code suivant :

    erreur : "error: cannot convert 'std::basic_string<char, std::char_traits<char> >' to 'char*' in initialization"

    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
    // j'ai changer le code depuis la dernière fois
    // mais c'est exactement le même problème !
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h> // lib de base de la SDL
    #include <SDL/SDL_image.h> // lib pour les loads de formats d'image bmp
    #include <SDL/SDL_ttf.h> // lib pour les loads de ttf
    #include <iostream> // lib pour l'affichage dans la console
    #include <vector> // lib pour l'utilisation de tableau redimensionnable
    #include <string> // lib pour la gestion des string
    #include <sstream> // lib pour convertion : int to string
     
    #include "element.h" // ma class
     
    ...
     
    char *tmp_pt ; // pointeur temporaire
     
     
    // converti (du moins essaie de convertir) un int en string pour 
    // pouvoir l'intégrer des ma fenêtre 
    ostringstream tmp_num ;
    tmp_num << mat[i][j].val ;
    char *tmp_pt = tmp_num.str();
    tmp_text = TTF_RenderText_Blended(font, tmp_pt, text_colour); // affectation 
    // de l'image du num à tmp text
     
    ...
    est-ce que quelqu'un sait d'où vient cette erreur ? Car je pensais ne pas devoir refaire ce que j'ai réussi à contourner et malheureusement cette fois-ci je n'arrive pas à contourner ce bou de code.

    (... au faite j'ai trouvé après coup qu'il fallait passer par un pointeur ... mais j'avais djà posté.)

    Bonne soirée.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Faut vraiment lire la doc tu sais, le C++ ça ne s'invente pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *tmp_pt = tmp_num.str();
    tmp_num.str() renvoie un std::string, pas un char*.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp_text = TTF_RenderText_Blended(font, tmp_num.str().c_str(), text_colour);
    Un peu de bonne lecture :
    http://c.developpez.com/faq/cpp/?page=strings

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

Discussions similaires

  1. problème message warning avec la SDL
    Par ShinobiX1 dans le forum SDL
    Réponses: 0
    Dernier message: 05/03/2014, 18h50
  2. Problème avec la SDL
    Par mjfcolas dans le forum SDL
    Réponses: 10
    Dernier message: 24/06/2007, 19h17
  3. Réponses: 10
    Dernier message: 03/03/2007, 13h46
  4. Problème avec la sdl sur devc++
    Par cuicuicui dans le forum SDL
    Réponses: 3
    Dernier message: 07/08/2006, 13h04
  5. probléme avec la sdl et c++
    Par wikers dans le forum OpenGL
    Réponses: 1
    Dernier message: 10/11/2004, 19h02

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