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 :

Inclusion de classes / problème de déclaration


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Inclusion de classes / problème de déclaration
    Salut!

    je dispose de deux classes, mettons c1 et c2.
    Dans la classe c2, je souhaite inclure comme donnée publique un tableau de taille n d'objets appartenant à la classe c1. j'ai fait un truc du type :

    class c1
    {
    ...
    };

    class c2
    {
    ....
    int n;
    c1 t[n];
    ....
    };

    car je veux que le tableau t ait une taille n, non connue a priori, cette taille n étant elle même une donnée publique de la classe c2...
    Evidemment, ça foire, il est pas content, à cause de ça..
    Quelqu'un sait comment je peux m'en sortir svp????

    Scal

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 74
    Points
    74
    Par défaut
    Il faut allouer ton tableau dynamiquement, ou (mieux) utiliser un conteneur de la STL comme vector.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector<c1> t;

  3. #3
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    donc soit tu vas voir du cote de la FAQ C++ (recherche vector) et tu auras donc a faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector <c1> t (n); //il te faut un constructeur par defaut de c1 me semble-t-il
    Soit tu utilise les pointeurs ("moins C++", mais tu verras sur le forum certains utilisateurs experimentés garder malgre tout cette habitude)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    c1 * t = new c1 [n]; //a verifier, mais il devrait forcement aussi te falloir un constructeur par defaut
    Avant de poser une question, lire la Avant de répondre, lire la question

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ça c'est une fonctionnalité C99 non disponible en C++98/03.
    Néanmoins c'est disponible avec GCC.
    Boost ftw

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut ça marche !!
    Merci bien!
    je m'en suis sorti via le constructeur et les vector :

    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 c1
    {
         ...
    };
     
    class c2
    {
         ....
         int n;
         vector<c1> t;
     
         // Constructeur
         c2(int m);
         ....
    };
     
    c2::c2(int m)
    {
         n=m;
         t=vector<c1>(m);
    }

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux construire directement ton tableau avec la liste d'initialisation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    c2::c2(int m) : n(m), t(m)
    {
     
    }
    Voir la FAQ C++ si tu ne sais pas ce que c'est.

    Et si n ne sert qu'à stocker la taille du tableau, tu peux la récupérer avec t.size().

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/10/2012, 22h19
  2. [ZF 1.10] Problème inclusion de classe et set_include_path()
    Par Darkstar34 dans le forum MVC
    Réponses: 3
    Dernier message: 27/03/2011, 23h37
  3. Problème de déclaration de classe
    Par Xzander dans le forum C#
    Réponses: 5
    Dernier message: 24/07/2007, 21h29
  4. Réponses: 2
    Dernier message: 27/05/2006, 13h13
  5. Problème de déclaration de segment avec use32
    Par le mage tophinus dans le forum Assembleur
    Réponses: 2
    Dernier message: 10/01/2003, 11h17

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