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

Langage C++ Discussion :

Initialiser un attribut de classe lors de la création d'une variable globale (tableau)


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Initialiser un attribut de classe lors de la création d'une variable globale (tableau)
    Bonjour,

    J'ai une petite question:
    Je souhaite initialiser un attribut de classe (un integer) lors de la construction d'une variable globale (un tableau).

    Fichier Decod.cc:
    Fichier Decod.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Decod{
    public:
       Decod();
       ~Decod();
    private:
       int Number;
    }
    L'attribut Number doit être égal à l'indice de la cellule construite, c'est-à-dire, pour gTabDecod[0] => Number =0, pour gTabDecod[1] => Number = 1...

    Comment faire cela proprement ?

    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 54
    Points : 67
    Points
    67
    Par défaut
    Salut,

    Avec mes connaissances, je passerai par une classe "DecodTab" et modifierai le constructeur de "Decod" comme suit:
    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
    class Decod{
    public:
       Decod(int InitNumber):Number(InitNumber) {}
       ~Decod() {}
    private:
       int Number;
    }
     
    class DecodTab{
    public:
       DecodTab(int Number)
       {
          for(int Index = 0; Index < Number; Index++)
          {
             vDecod.push_back(Decod(Index));
          }
       }
       ~DecodTab() {}
       Decod GetDecod(int Index) const { return vDecod[Index]; }
    private:
       std::vector<Decod> vDecod;
    }
    Tu déclares une variable globale DecodTab, et voilà. Bon, c'est loin d'être optimum: il y a pas mal de copie de classe (à supposer que la création par copie sera supportée par ta classe Decod), tu peux éventuellement passer par des références/pointeurs, etc. C'est juste pour te donner l'idée.

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 626
    Points : 30 684
    Points
    30 684
    Par défaut
    Salut,

    Déjà, si j'étais toi, j'essayerais d'éviter la variable globale car elle pose beaucoup plus de problèmes qu'elle ne semble en résoudre

    Je t'inviterais donc volontiers à essayer de réfléchir à
    pourquoi aurais-je besoin d'une variable globale qui contienne 100 (et d'ailleurs, pourquoi pas 50, 150 ou... 500 il faut tout le temps se méfier des décisions arbitraires ) objets de types Decod alloués sur la pile
    Cette réflexion devrait te permettre de te rendre compte que tu n'as sans doute pas forcément besoin de ces objet strictement "partout"...

    Partant de là, il n'est pas exclu que tu puisse décider de transmettre cet ensemble d'éléments aux fonctions qui en ont besoin, et donc de déterminer l'endroit où ils devront effectivement être créés.

    Il te deviendra donc assez facile de faire en sorte que ces différents objets prennent, effectivement, la valeur adéquate
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [Lazarus] [Linux] Erreur lors de la création d'une instance de classe héritée
    Par timmalos dans le forum Lazarus
    Réponses: 2
    Dernier message: 10/05/2011, 12h59
  2. Figer une variable de classe lors de sa déclaration dans une itérative
    Par Freeluvs dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/02/2010, 15h16
  3. Réponses: 1
    Dernier message: 22/02/2008, 11h30
  4. [WPF] Plantage lors de la création d'une instance de classe
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 14/09/2007, 14h31
  5. Erreur lors de la création d'une variable
    Par neuro6 dans le forum C++
    Réponses: 5
    Dernier message: 22/01/2007, 08h40

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