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 :

[Debutant] map global


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut [Debutant] map global
    Bonjour,
    Je developpe actuellement un programme qui manipule des matrices. Je souhaiterais pouvoir nommer les matrices que j'utilise dans un tableau associatif et que celui-ci, et c'est la la raison de mon post, soit accessible a toutes les classes de mon programme.

    Par exemble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    map<string, string> kSymmetry;
    kSymmetry["2x"]="[1 0 0, 0 -1 0, 0 0 -1]";
    kSymmetry["2y"]="[-1 0 0, 0 1 0, 0 0 -1]";
    kSymmetry["3z"]="[0 -1 0, 1 0 0, 0 0 1]";
    ...
    Mon probleme est d'avoir cette map en globale, et accessible à toutes mes classes. Je vois bien la possiblité de dériver toutes ces classes d' une classe mère contenant kSymmetry en static, mais existe t il une autre methode, peut etre un peu plus propres ?

    A+


    balises [code] rajoutées par r0d.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    Pourquoi dériver d'une classe mère contenant la map en satic ?

    Si tu dois pouvoir modifier la map depuis toutes tes autres classes, fais en une variable static public dans une classe.

    Si tu dois seulement accéder à cette map en lecture, mets la variable en static privée dans une classe, et founis une fonction retournant une référence const vers cette map.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    Oui enfin celà implique que toutes les classes qui utilise la map doivent avoir en attribut la class contenant la map. C'est justement que je voulais eviter.

    A+

  4. #4
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Si tu ne souhaites avoir qu'une seule instance de cette map dans tout ton programme, le singleton est la solution.

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    Citation Envoyé par Etrange
    Oui enfin celà implique que toutes les classes qui utilise la map doivent avoir en attribut la class contenant la map. C'est justement que je voulais eviter.

    A+
    Euh non justement si ta map est une variable statique publique, pas besoin d'attribut dans les classes qui l'utilisent. Si elle est privée, rend la méthode d'accès a la map statique et toujours pas besoin d'attribut.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    Citation Envoyé par bolhrak
    Euh non justement si ta map est une variable statique publique, pas besoin d'attribut dans les classes qui l'utilisent. Si elle est privée, rend la méthode d'accès a la map statique et toujours pas besoin d'attribut.
    Voilà, une notion que je ne connais pas ... jusqu'a present je ne manipulais pas trop les variables statiques. Peux tu me donner un petit exemple syntaxique ?

    Ca à l'air d'etre la solution de mon probleme mais malheureusement je manque encore de connaissances :/

    A+

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    Citation Envoyé par Etrange
    Voilà, une notion que je ne connais pas ... jusqu'a present je ne manipulais pas trop les variables statiques. Peux tu me donner un petit exemple syntaxique.

    A+
    Alors pour la variable statique publique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    class ClasseEncapsulante {
     
    public:
     
        typedef map<Matrice*> matrice_map_t;
        static matrice_map_t matrice_map;
     
    };
    Tu y accèdes de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    //là où tu en as besoin :
     
    //lecture
    Matrice* m = ClasseEncapsulante::matrice_map[la_clé_qui_va_bien];
     
    //ecriture
    ClasseEncapsulante::matrice_map[la_cle_qui_va_bien]=la_bonne_matrice;
    Pour la variable en privé avec méthode statique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    class ClassEncapsulante {
     
    public:
     
        typedef map<Matrice*> matrice_map_t;
     
        static const matrice_map_t& Get_Matrice_Map() const;
     
    private:
     
        static matrice_map_t matrice_map;
    };
    Pour y accéder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    //la ou tu en as besoin
     
    //lecture
    Matrice* m = ClasseEncapsulante::Get_Matrice_Map().find(la_clé_qui_va_bien);
     
    //ecriture impossible car reference constante retournée par la fonction Get_Matrice_Map

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    Merci bolhrak !!!

    C'est exactement ce que je voulais, mais je manquais de connaissance sur l'utilisation des variables statiques.

    Et en plus les reponses étaient rapides .

    A+

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

Discussions similaires

  1. Mapping global : SAP + Informatica + SQL Server + BO
    Par Darksnakes dans le forum Informatica
    Réponses: 0
    Dernier message: 09/02/2011, 10h30
  2. [Debutant]Mapping pour une collection
    Par maxattack dans le forum Hibernate
    Réponses: 14
    Dernier message: 14/06/2007, 10h59
  3. [debutant] map et opérateur '<'
    Par Merfolk dans le forum Débuter
    Réponses: 1
    Dernier message: 29/12/2005, 11h52
  4. [Debutant] Variables globales
    Par Jones dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2005, 11h52
  5. [Debutant(e)] [hashmap] interface interne Map.Entry
    Par debdev dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 12/03/2005, 17h53

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