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 :

Classe et tableau dynamique


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 89
    Points : 50
    Points
    50
    Par défaut Classe et tableau dynamique
    Bonjour,
    Je souhaite implémenter une classe qui contient un tableau dont la taille serait fixée à l'initialisation de la classe, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Selection
    {
      public:
        Selection(int size);
        int getNbrPoints();
        int addPoint(double x, double y, double z);
        Point *getPoint(int index);
     
      private:
           int size;	
           Point ptsTable[size];
           int nbrPts;		// nombre de points dans la selection
    };
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Selection::Selection(int size)
    {
      this->size=size;
      nbrPts=0;
    }
    Cela ne semble pas possible ... pourquoi?

    Merci d'avance pour votre aide.
    Christian

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par coberle Voir le message
    Cela ne semble pas possible ... pourquoi?
    Parce que la notation avec les [] nécessite une constante. Pour un tableau de taille variable il faut utiliser std::vector.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <vector>
     
    class Selection
    {
    public:
      int getNbrPoints() const {return ptsTable.size();}
      int addPoint(double x, double y, double z) {ptsTable.push_back(Point(x, y, z));}
      Point& getPoint(int index) {return ptsTable[index];}
     
    private:
      std::vector<Point> ptsTable;
    };

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Si ta taille est constante à la compilation, tu peux utiliser un template:
    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
     
    template<int TNbrElement>
    class Selection
    {
    public:
       Selection();
       int getNbrPoints();
       int addPoint(double x, double y, double z);
       Point *getPoint(int index);
     
    private:
       const int size;
       Point ptsTable[TNbrElement];
       int nbrPts; // nombre de points dans la selection
    };
    template<int TNbrElement>
    Selection<TNbrElement>::Selection()
    :size(TNbrElement)
    {
    ...
    }
    Sinon, c'est du dynamique (std::vector ou autre).

  4. #4
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    [HS] Il y a aussi boost::array et std::tr1::array qui offrent la fonctionnalité de tableau a taille fixe mais au niveau de la compilation par contre.

    Sinon mieu vaut utiliser/wrapper un std::vector.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 89
    Points : 50
    Points
    50
    Par défaut Merci ...
    ... pour vos réponses rapides :-)
    Christian

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

Discussions similaires

  1. Tableau dynamique deux dimensions de class
    Par Hyssgrif dans le forum C++
    Réponses: 3
    Dernier message: 17/04/2015, 15h22
  2. Réponses: 3
    Dernier message: 23/03/2015, 11h12
  3. Réponses: 20
    Dernier message: 06/02/2013, 00h17
  4. [Kylix] tableau dynamique
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 31/10/2002, 08h57
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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