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 :

Tableau de pointeurs sur objets


Sujet :

C++

  1. #1
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut Tableau de pointeurs sur objets
    Bonsoir à tous ,

    Je suis encore débutant en C++ ,

    je voudrais savoir comment créer un tableau de pointeurs sur des objets de type (par ex :TFenetre).

    et ensuite utiliser ces pointeurs pour acceder à l'objet correspondant.

    Merci.
    Where is my mind

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    TFenetre * tab_pt_fenetre [10];

    Ou bien avec malloc :
    TFenetre ** pt_pt_fenetre = malloc(10*sizeof(*pt_pt_fenetre));
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    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
    Citation Envoyé par Médinoc
    TFenetre * tab_pt_fenetre [10];

    Ou bien avec malloc :
    TFenetre ** pt_pt_fenetre = malloc(10*sizeof(*pt_pt_fenetre));
    Tu t'es trompé de forum ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <vector>
     
    std::vector<TFenetre*> Tab;
    Pour le reste :

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

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Arrrrrg !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TFenetre ** pt_pt_fenetre = malloc(10*sizeof(*pt_pt_fenetre));
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par Loulou24
    Tu t'es trompé de forum ?

    J'ai lu "tableau", j'en ai oublié les conteneurs (j'ai grandi sans, je viens à peine de réapprendre le C++ avec la STL...)
    Quant au new, je ne sais pas ce que j'en ai fait...

    TFenetre ** pt_pt_fenetre = new TFenetre *[10];
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    merci déja de me répondre ,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TFenetre ** pt_pt_fenetre = 
    malloc(10*sizeof(*pt_pt_fenetre));
    Je suis encore débutant en C++,alors j'ai pas compris le TFenetre **
    Pourquoi il y a 2 (*).

    autre chose ,je pense que malloc sert à allouer de la mémoire pour les objets en question .

    mais moi je veux créer par moi même ces objets , et ensuite seulement mémoriser l'adresse de ces objets dans ce tableau depointeurs.

    par ex comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      TFenetre Fenetre();//initialisation de l'objet
     
      Tab[index]=&objetFenetre;//?????
     
      //ensuite utiliser l'adresse contenue dans le tableau
     (*Tab[index]).méthode();//est ce juste ???
    Where is my mind

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Utilise vector.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::vector<TFenetre*> Tab;
    Tab.push_back( &objetFenetre1 );
    Tab.push_back( &objetFenetre2 );
    Tab.push_back( &objetFenetre3 );

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par bassim
    Je suis encore débutant en C++,alors j'ai pas compris le TFenetre **
    Pourquoi il y a 2 (*).
    TFenetre ** parce que c'est un pointeur de pointeur (L'adresse d'un tableau de pointeurs et un pointeur vers le premier d'entre eux).

    Le malloc() (ou le new dans mon autre post) ne crée pas les objets, seulement des pointeurs non-initialisés (ils ne pointent vers rien du tout).

    après, tu aurais pu faire :
    pt_pt_fenetre[3] = new TFenetre( parametres );


    Mais nous sommes en C++ il est vrai, ce que j'ai dit était plutôt digne du langage C.
    Ici, utilise plutôt le conteneur vector de la stl, comme l'indique Aurélien.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::vector<TFenetre*> Tab;
    Tab.push_back( &objetFenetre1 );
    Tab.push_back( &objetFenetre2 );
    Tab.push_back( &objetFenetre3 );
    le probleme c'est que je travaille avec Turbo C++ version 3.0 (sous_dos),
    c'est le prof qui nous l'a imposé .

    et j'ai cherché dans l'aide ,et je n'ai trouvé ni vector ni std.
    Where is my mind

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 749
    Points : 10 666
    Points
    10 666
    Billets dans le blog
    3
    Par défaut
    Ah ben oui
    Turbo C est le plus mauvais choix que je connaisse pour faire du C++, je sais pas ce qui lui prend à ton prof

  11. #11
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par bassim
    le probleme c'est que je travaille avec Turbo C++ version 3.0 (sous_dos),
    c'est le prof qui nous l'a imposé.
    Domage que je n'ai plus acces a CFront... ca aurait vraissemblablement plu a ton prof. :-)

    Rassure-moi, c'est pas presente comme un cours de C++ mais comme un cours d'autre chose ou le C++ est utilise.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  12. #12
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    Finalement , j'ai réglé le probleme et il n'était pas en rapport avec le tableau de pointeurs... mais merci comme même pour vos réponses.

    Citation Envoyé par Jean Marc Bourguet
    Rassure-moi, c'est pas presente comme un cours de C++ mais comme un cours d'autre chose ou le C++ est utilise.
    Il nous a demandé de faire un gestionnaire de fenetres qui crée les fenetres
    et permet toutes les choses qu'un gestionnaire comme celui de Windows peut faire (mais en plus simple bien sûr).

    rassures toi , ce n'est pas présenté comme un cours sur le C++ ,
    d'ailleurs on a même pas fait de cours sur le C/C++ tout au long de mon cursus universitaire ;
    on a été obligé d'apprendre tout , tous seuls ...
    Where is my mind

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

Discussions similaires

  1. Pointeur sur objet
    Par bubulemaster dans le forum Débuter
    Réponses: 5
    Dernier message: 26/09/2007, 09h10
  2. Passage de tableau de pointeurs vers objets
    Par gnulix dans le forum C++
    Réponses: 5
    Dernier message: 14/04/2007, 19h41
  3. Réponses: 4
    Dernier message: 04/02/2007, 00h06
  4. [BCB6]Tableau de pointeurs sur fonctions
    Par rtg57 dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/10/2006, 20h49
  5. [Debutant VC++.net] Obtenir un pointeur sur objet
    Par SteelBox dans le forum MFC
    Réponses: 6
    Dernier message: 17/06/2004, 18h36

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