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

SL & STL C++ Discussion :

Instanciation d'un vector à l'intérieur d'une classe


Sujet :

SL & STL C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut Instanciation d'un vector à l'intérieur d'une classe
    Bonsoir,
    Je cherche à instancier un vector à l'intérieur d'une classe. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #ifndef classe_h
    #define classe_h
    #include <vector>
    using namespace std;
     
    class maclasse
    {
    	public:
    		vector<int> V(2);
     
    };
    J'obtiens le message d'erreur suivant:
    error: expected identifier before numeric constant|
    error: expected `,' or `...' before numeric constant|
    error: ISO C++ forbids declaration of `parameter' with no type|
    ||=== Build finished: 3 errors, 0 warnings ===|
    Malgré des recherches sur Google et dans la FAQ, je ne comprends pas mon erreur. Pouvez-vous m'aider?
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Ce qui se passe, c'est que tu déclare un membre de type vector<int> et nommé V.

    Or, ce que tu cherche à faire, c'est à définir le membre V.

    Mais la définition en elle-même s'effectue uniquement... lors de la construction d'un objet.

    Par conséquent, c'est dans le constructeur (qu'il aura, bien évidemment fallu déclarer au préalable) de l'objet que tu dois effectuer la définition de v, sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maclasse::maclasse():A(2){}
    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

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut
    Merci beaucoup!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 18
    Par défaut
    Juste une dernière question, pour définir un 2ème membre, comment dois-je procéder?
    Par exemple, pour un membre B de taille 3:
    maclasse::maclasse():A(2):B(3){}
    ?

  5. #5
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Non de cette façon :


    maClasse::maClasse():A(2), B(3) {}

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Non, les éléments de la liste d'initialisation doivent être séparés par une virgule...

    Cela donne quelque chose dans le genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class maclasse
    {
        public:
            maclasse();
            ~maclasse();
       private:
           std::vector<int> A;
           std::vector<int> B;
           std::string C;
    };
    implémenté sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    maclasse::maclasse():A(2),B(3),C("salut")
    {
    }
    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

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

Discussions similaires

  1. Classe à l'intérieur d'une classe ?
    Par hsoussou dans le forum Débuter
    Réponses: 12
    Dernier message: 14/01/2009, 13h23
  2. Réponses: 6
    Dernier message: 14/12/2008, 02h12
  3. [Système] Tri à l'intérieur d'une classe
    Par FrankOVD dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2006, 22h54
  4. Objet vector<Type> membre d'une classe
    Par Chewbi dans le forum SL & STL
    Réponses: 3
    Dernier message: 16/02/2006, 17h12
  5. Réponses: 6
    Dernier message: 03/03/2004, 14h31

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