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 :

pointeur vers tableau de pointeurs


Sujet :

C++

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut pointeur vers tableau de pointeurs
    Bonjour à tous. Voilà quelques semaines que j'ai décidé de me mettre au C++, j'ai bien compris les notions de classe et de pointeurs, mais j'ai un problème avec les tableaux alloués avec new ...

    j'ai une classe, pour simplifier, ça ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class ClasseTest
    {
      public :
        ClasseAutre** Tab[];
      . . .
    };
     
    class ClasseAutre
    {
      . . .
    };
    Déjà là je ne sais pas si c'est correct avec **.
    dans une méthode de ClasseTest, je veux allouer un tableau de taille n, de pointeurs vers des instances de ClasseAutre.

    J'ai essayé plein de choses mais j'ai toujours des erreurs.

    En gros, j'aimerais avoir dans ma classe ClasseTest, une variable de type pointeur vers un tableau de pointeurs sur des objets ClasseAutre.

    Pourriez-vous svp m'aider ?

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Salut,
    Si tu fais du C++, je ne te conseille pas d'utiliser des bêtes tableaux pour stocker tes pointeurs mais plutôt des vectors de la bibliothèque standard.

    http://cpp.developpez.com/faq/cpp/?page=STL#STL_vector

    Le mieux serait d'utiliser aussi les pointeurs intelligents de chez loki ou boost mais comme tu débutes, je ne voudrais pas te noyer sous des notions nouvelles.

    a+

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut
    merci pour ta réponse, mais je ne souhaite pas utiliser de librairies, je veux faire ça à la main.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Citation Envoyé par Michel_57 Voir le message
    dans une méthode de ClasseTest, je veux allouer un tableau de taille n, de pointeurs vers des instances de ClasseAutre.
    En gros, j'aimerais avoir dans ma classe ClasseTest, une variable de type pointeur vers un tableau de pointeurs sur des objets ClasseAutre.
    Tu es sûr d'avoir besoin d'un pointeur vers un tableau de pointeurs. Un tableau de pointeurs ne te suffirait pas ? Dans ce cas déclare le ainsi.

  5. #5
    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,
    Déjà, si tu veux disposer d'un tableau de pointeurs alloué dynamiquement, il faut, tout simplement, que le membre de ta classe soit... un pointeur de pointeur.

    Cela prendrait donc la forme de
    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
    class ClasseTest
    {
      public :
        ClasseTest(size_t size): size(size)
        {
            Tab=new ClassAutre*(size);
        }
        ~ClasseTest()
        {
            /* n'oublie pas qu'il y a des chances qu'il faille, aussi, 
             * libérer la mémoire allouée à chaque pointeur ;)
             */
            delete[] Tab;
        }
        ClasseAutre** Tab;
      . . .
    };
    Citation Envoyé par Michel_57 Voir le message
    merci pour ta réponse, mais je ne souhaite pas utiliser de librairies, je veux faire ça à la main.
    Oui, mais là... tu empoigne le marteau pour te taper toi même sur la tête...

    L'avantage de la S(T)L, qui signifie au passage Standard (Tepmlate) Library, c'est qu'elle est... standard (disponible avec tous les compilo récents), très efficace, et ... abondamment testée

    Sans même partir sur l'idée d'utiliser boost ou loki (et pourtant ces bibliothèques valent franchement la peine de s'y attarder ) vouloir programmer en C++ en ne voulant pas utiliser une bibliothèque (quelle qu'elle soit) revient à vouloir rouler en voiture... sans jamais mettre d'essence dans le réservoire.

    L'une des premières choses, qui n'apparait malheureusement dans aucun livre, que l'on apprend en programmation est la maxime
    Pourquoi (mal) faire soi-même ce que d'autres ont déjà (bien) fait ailleurs
    Bien sûr, tu peux décider de te passer de tout, mais, au final, tu rencontrera des problèmes qui ont déjà été rencontrés par maintes personnes à maintes occasions, et qui ont déjà trouvé une solution correcte et efficace...

    Ce qui ne manquera pas de t'emmener irrémédiablement vers des dépassements de délais intolérables
    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

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    En gros, j'aimerais avoir dans ma classe ClasseTest, une variable de type pointeur vers un tableau de pointeurs sur des objets ClasseAutre.
    Pour répondre spécifiquement à cette question, ta variable, ainsi décrite, doit être du type

  7. #7
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 133
    Par défaut
    merci koala, ça à l'air de fonctionner ! (tu as fait une faute de frappe c'est des crochets et pas des parenthèses ^^)

    je met résolu, je viendrai réouvrir si jamais il y a un problème car je n'ai pas encore fait tous les tests, mais ça me semble bien parti !


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

Discussions similaires

  1. Réponses: 9
    Dernier message: 07/07/2008, 11h43
  2. Réponses: 4
    Dernier message: 04/02/2007, 00h06
  3. Réponses: 2
    Dernier message: 12/10/2006, 20h28
  4. [VB.NET] Pointeur vers tableau
    Par b_lob dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/08/2006, 16h06
  5. convertion pointeur vers tableau
    Par gdpasmini dans le forum C++
    Réponses: 2
    Dernier message: 30/03/2006, 00h34

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