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

SL & STL C++ Discussion :

Vector de map->plantage


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut Vector de map->plantage
    Bonjour.

    J'ai un petit problème avec un vector de map, mon programme plante au constructeur de la classe C_FileData :

    C_FileData.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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    #ifndef _CLASS_FILE_DATA_H
    #define _CLASS_FILE_DATA_H
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <fstream>
    #include <sstream>
    #include <iostream>
    #include <string>
    #include <map>
    #include <vector>
     
     
    using namespace std;
     
    /*
     
    */
     
     
     
    class C_FileData
    {
    private:
     
        enum {WIDTH=0, HEIGHT=1, NOMBRE=2};
        vector<map<int, int> > m_DataDecors;
     
        enum{BASEX=0, BASEY=1, TAILLEX=2, TAILLEY=3};
        vector<map<int, int> > m_DataTextureSol;
     
    public:
        // Constructeur.
        C_FileData();
     
        // Destructeur.
        ~C_FileData();
     
        //Connaitre les données
        const map<int, int> Get_DataDecors(int Decors) const;
        const map<int, int> Get_DataTextureSol(int TextureSol) const;
    };
     
    #endif
    Constructeur de C_FileData :
    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
     
    C_FileData::C_FileData()
    {
        string buf;
        string resultat;
        string Nom_trouve;
        string buf_data;
        string chemin;
        int nombre, pos, temp;
        //CHARGEMENT DES TEXTURES DU SOL
        ifstream file("Data/interface.e");
        file >> buf;
        while (buf != "[/Texture_sol]")
        {
            fprintf(stderr, "%s\n", buf.c_str());
            pos = buf.find("=");
     
            resultat = buf.substr(pos-pos,pos);
            istringstream nbr_result(resultat);
            nbr_result >> nombre;
            resultat = "Images/Textures/Sol/";
            resultat += buf.substr(pos+1,buf.length()-pos);
     
            chemin=resultat+".tex";
            ifstream file_data(chemin.c_str());
            //Charge les données width de la texture
            file_data >> buf_data;
            pos = buf_data.find("=");
            resultat = buf_data.substr(pos+1,5);
            istringstream nbr_result2(resultat);
            map<int, int>::const_iterator It = m_DataTextureSol[nombre].find(WIDTH);
            if (It != m_DataTextureSol[nombre].end())
            {
                nbr_result2 >> temp;
                m_DataTextureSol[nombre][WIDTH] = temp;
            }
    J'ai fait quelques tests, et je sais que c'est à la ligne
    map<int, int>::const_iterator It = m_DataTextureSol[nombre].find(WIDTH);

    que le programme plante... Si vous avez une solution, je suis preneur

  2. #2
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je ne vois pas à quel moment tu remplis ton tableau m_DataTextureSol, avant d'y accéder ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const map<int, int> Get_DataDecors(int Decors) const;
    const map<int, int> Get_DataTextureSol(int TextureSol) const;
    Il semblerait que tu aies oublié les références (&) dans les types de retour.

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Une remarque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <cstdlib>
    #include <cstdio>
    a la place de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <stdlib.h>
    #include <stdio.h>

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par seriousme
    Une remarque:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <cstdlib>
    #include <cstdio>
    a la place de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <stdlib.h>
    #include <stdio.h>
    Voire même rien du tout, a priori rien dans son code n'a besoin de ces en-têtes de la bibliothèque standard du C.

  5. #5
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    MMh, pour les en-tete, j'étais sur que j'avais des trucs en trop ^^'

    Le tableau, je le rempli justement pendant le constructeur... Je cherche dans un fichier des données et je le rempli.

    A la base, j'avais juste fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbr_result2 >> m_DataTextureSol[nombre][WIDTH];
    Mais ça plantait aussi...

  6. #6
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Là tu remplis les std::map qui sont les éléments de ton tableau, mais le tableau en lui-même n'est jamais rempli ou dimensionné. Donc lorsque tu fais m_DataTextureSol[nombre], m_DataTextureSol[nombre] n'existe pas.

  7. #7
    Membre très actif
    Inscrit en
    Septembre 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 139
    Par défaut
    A d'accord !!!

    Mais comment faire alors ?? Puisqu'il faut quand meme que je passe par une clé à un moment... :-/

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

Discussions similaires

  1. Vector, List, Map, Tree
    Par zorglub59 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/10/2011, 11h15
  2. Problème création d'iterator ( Vector et Map )
    Par LittleWhite dans le forum SL & STL
    Réponses: 11
    Dernier message: 27/03/2009, 22h00
  3. [STL] rapidité vector vs map
    Par befalimpertinent dans le forum SL & STL
    Réponses: 11
    Dernier message: 24/07/2007, 15h10
  4. Map ou vector?
    Par Magon dans le forum SL & STL
    Réponses: 5
    Dernier message: 27/05/2006, 01h15
  5. Réponses: 2
    Dernier message: 11/07/2003, 18h24

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