Bonjour à tous !

Je suis sur un gros problème et je ne trouve pas la solution. j'ai cherché partout, rien.

J'utilise une classe:


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
 
class carte
{
      public:
              carte();
              ~carte();
              void chargement(char* mapp, SDL_Surface *screen);
              int **tableau_donnee_carte;
              int **tableau_donnee_collision;
              void afficher();
              void bouge(int x, int y);
              int collision(int x, int y, int bouge_x, int bouge_y);
      private:
              int i;
              int j;
              int k;
              int deplacement_x;
              int deplacement_y;
              FILE *fp;
              int taille_carte_x;
              int taille_carte_y;
              string tileset;
              string path;
              SDL_Rect clip_map[480];
              SDL_Surface *map;
              SDL_Rect position;
              SDL_Surface *screen;
              void chargement_png();
};
Dans cette classe j'ai une fonction.

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
 
void carte::chargement(const char* map, SDL_Surface *screen)
{
    this->screen = screen;
    fp = fopen(map,"r");
    fscanf(fp, "%d,%d,%s", &this->taille_carte_y, &this->taille_carte_x, this->tileset.c_str());
    tableau_donnee_carte = (int**)calloc(this->taille_carte_x, sizeof(unsigned int));
    tableau_donnee_collision = (int**)calloc(this->taille_carte_x, sizeof(unsigned int));
        for (i = 0; i < taille_carte_x; i++)
        {
            tableau_donnee_carte[i] = (int*)calloc(this->taille_carte_y, sizeof(unsigned int));
            tableau_donnee_collision[i] = (int*)calloc(this->taille_carte_y, sizeof(unsigned int));
            for (j = 0; j < taille_carte_y; j++)
            {
                 fscanf(fp, "%d|", &(tableau_donnee_carte[i][j]));
                 fscanf(fp, "%d,", &(tableau_donnee_collision[i][j]));    
            }       
        }
    fclose(fp);
    chargement_png();
}
J'apelle cette fonction via :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
o_carte->chargement("carte.hkm", ecran);
Après plusieurs tests. Il semble que ça plante sur la ligne
J'ai essayé de mettre les paramètres de la fonction en const char*. j'ai essayé de passer en string etc... rien à faire. ça compile mais ça plante (je suis sur dev-c++). Par contre, si je declare un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char* test = "carte.hkm"
dans ma class et que je met test au lieu de map dans la ligne du fopen. Magie, ça marche.

Malheureusement, le programme etant un moteur de jeu. je peut pas me permettre de faire comme ça.