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

MFC Discussion :

[MFC][VISUAL 2005] Initialisation d'un membre statique de type map


Sujet :

MFC

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut [MFC][VISUAL 2005] Initialisation d'un membre statique de type map
    Bonsoir � toutes et � tous.

    J'ai un soucis que je ne parviens pas � r�soudre.

    J'ai une classe, destin�e � �tre d�riv�e qui poss�de un membre de type map et d�clar�e de la fa�on suivante :
    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
     
    class CClasseBase  
    {
    struct Etat
    {
    int nId;
    int nSigne;
    };
     
    public:
    CClasseBase();
    virtual ~CClasseBase();
     
    protected:
    map<int, list<Etat> > m_mapEtats;
    };
    Pour le moment j'initialise la map dans le constructeur de la fa�on suivante :
    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
     
    CClasseBase::CClasseBase()
    {
    {
    list<Etat> etats;
    Etat e1;
    e1.nId=1;
    e1.nSigne=1;
    etats.push_back(e1);
     
    Etat e2;
    e2.nId=2;
    e2.nSigne=1;
    etats.push_back(e2);
     
    this->m_mapEtats[1] = etats;
    }
     
    {
    list<Etat> etats;
    Etat e1;
    e1.nId=3;
    e1.nSigne=1;
    etats.push_back(e1);
     
    Etat e2;
    e2.nId=4;
    e2.nSigne=0;
    etats.push_back(e2);
     
    Etat e3;
    e3.nId=5;
    e3.nSigne=0;
    etats.push_back(e3);
     
    this->m_mapEtats[2] = etats;
    }
    }
    Tout ceci fonctionne parfaitement et j'en arrive au probl�me indiqu� dans l'intitul�.

    Cette classe est destin�e � �tre d�riv�e. A la construction de chaque classe d�riv�e le constructeur de la classe de base sera donc appel� et au final j'aurai en m�moire autant de map intialis�es que d'instances de classes d�riv�es.

    Pour donner des informations suppl�mentaires, je peux dire que les donn�es de la map ne sont pas modifi�es par les classes d�riv�es et que ces derni�res se contentent d'acc�der aux donn�es de la map en utilisant des it�rateurs.

    Etant donn� tout �a j'ai pens� d�clarer le membre comme statique mais je ne vois pas comment l'initialiser.

    Est ce que quelqu'un(e) � un �l�ment de solution ?

    D'avance merci.

  2. #2
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    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
    class CClasseBase  
    {
    struct Etat
    {
    int nId;
    int nSigne;
    };
     
    public:
    CClasseBase();
    virtual ~CClasseBase();
     
    protected:
    static map<int, list<Etat> > m_mapEtats;
    };
    Dans le source:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    map<int, list<Etat> >  CClasseBase::m_mapEtats;

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut
    Salut Farscape !

    Ok pour ta proposition, mais concernant l'affectation des donn�es dans la map (code r�sidant actuellement dans le contructeur), je peux le laisser dans la constructeur ou bien le d�placer au m�me endroit ?

    D'avance merci.

  4. #4
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    oui tu peux laisser dans le constructeur.
    il te suffit pour l'initialiser de verifier que la map est vide ...

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut
    ok merci je vais essayer �a. Je vais aussi comparer une autre solution en utilisant des tableaux � plusieurs dimensions, �a peut le faire aussi.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. MFC - Visual 2005 - Graphique 2D
    Par Bop99 dans le forum MFC
    R�ponses: 1
    Dernier message: 21/01/2010, 08h36
  2. R�ponses: 2
    Dernier message: 17/04/2008, 18h23
  3. R�ponses: 0
    Dernier message: 25/07/2007, 14h47
  4. R�ponses: 6
    Dernier message: 22/09/2006, 13h31
  5. [MFC][Visual 2005] Probl�me CList
    Par samtheh dans le forum MFC
    R�ponses: 1
    Dernier message: 17/06/2006, 23h26

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