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

C++ Discussion :

extern std:map problème exécution


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Par défaut extern std:map problème exécution
    Bonjour, J'ai un petit problème à l'utilisation d'une map définie de cette façon :
    un fichier .h contient extern std::map<int,et ici un type d'une bibliothèque> Images;
    un fichier .cpp contient la même chose sans le extern.
    Je précise que ce map appartient à un espace de nom défini dans le .h.
    J'utilise ce map dans le fichier .cpp...
    A la base dans mon application, l'erreur survenait quand je quittait le programme.
    J'ai réduit à un code minimal mais rien n'y fait tant que ma définition du map se trouve dans un autre fichier ça plante, par contre si je déclare directement dans le .cpp ou même dans le main.cpp aucune erreur.

    Merci à ceux qui sauront m'expliquer pourquoi la déclaration extern d'un std::map pose problème.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Par défaut
    Svp personne n'a d'idées concernant mon probleme ?

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Dans le .cpp, tu as bien déclaré ta map en l'incluant aussi dans l'espace de nom?
    Sinon, si tu nous montrais ce code minimal ainsi que le message d'erreur que ça génère ça nous aiderait.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Par défaut
    Merci d'avoir répondu, voila mon code en gros paske j'ai presk tout mis en commentaires donc je mets que ce qui est actif:

    Entity.h

    Code c++ : 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
    #ifndef ENTITY_H
    #define ENTITY_H
     
    #include <SFML/Graphics.hpp>
     
     
    namespace Engine
    {
     
    		extern std::map<sf::Uint32,sf::Image> Images;
    		extern sf::Uint32 Images_Number;
     
    /* plus les déclarations de classes*/
    }
     
    #endif

    Entity.cpp

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Entity.h"
     
    std::map <sf::Uint32,sf::Image> Engine::Images;
    sf::Uint32 Engine::Images_Number=0;
     
    /*définitions fonctions membres des classes*/

    main.cpp

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "Entity.h"
    #include <SFML/Graphics.hpp>
    #include <iostream>
     
    int main()
    {
    	std::string f;
    	Engine::Terrain plain("sprite_model_6.png");
     
    	std::cin >> f;
     
    return EXIT_SUCCESS;
    }

    Sachant que mon construteur ne fait juste que :

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sf::Image Temp;
    Images[0] = Temp;

    Si je met tout dans le même header tout marche...

    Voila si vous avez d'autres questions je guette le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Par défaut
    Petite précision zais_ethael, même si je mets ce que tu m'as dit

    namespace Engine
    {
    std::map <sf::Uint32,sf::Image> Images;
    std::Uint32 Images_Number = 0;
    }

    j'obtiens la même erreur qui est du genre "la mémoire ne peut pas être read"

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Par défaut
    Du nouveau, j'arrive à faire marcher tout ça, mais c'est très étrange (ou alors quelque chose m'échappe)

    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set_Type(Get_Images_Number());		
    	sf::Image Temp;	
    	std::pair <std::map<sf::Uint32,sf::Image>::iterator,bool> k = Images.insert(std::make_pair(Get_Type(),Temp));
    	if(k.second)
    		std::cout << "OK";
    	else
    		std::cout << "ERROR";
    	Images.clear();

    voila le code de mon constructeur, si j'efface tous les éléments l'exécution se termine normalement, sinon elle échoue...
    Mais dans tous les cas l'insertion s'effectue correctement.
    Ce qui m'indique qu'après l'utilisation d'un map il faut effacer tous les éléments ?
    Bizarre bizarre...
    Y a t'il un expert de la stl parmi vous ? lol

Discussions similaires

  1. Problème remplissage std::map
    Par Pixcoder dans le forum Langage
    Réponses: 9
    Dernier message: 13/06/2009, 10h21
  2. Réponses: 7
    Dernier message: 17/01/2009, 13h10
  3. std map problème récurrent
    Par Champignon_atomik dans le forum SL & STL
    Réponses: 11
    Dernier message: 03/10/2008, 17h35
  4. Problème de class template et std::map
    Par bathof dans le forum Langage
    Réponses: 2
    Dernier message: 31/07/2007, 22h18
  5. Problème de fonction "const" avec une std::map
    Par Clad3 dans le forum SL & STL
    Réponses: 3
    Dernier message: 02/01/2007, 12h38

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