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.
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
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.
Tu t'es trompé de forum ?Envoyé par Médinoc
Pour le reste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include <vector> std::vector<TFenetre*> Tab;
http://c.developpez.com/faq/cpp/?page=STL#STL_vector
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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
Envoyé par Loulou24
![]()
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.
merci déja de me répondre ,
Je suis encore débutant en C++,alors j'ai pas compris le TFenetre **
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2TFenetre ** pt_pt_fenetre = malloc(10*sizeof(*pt_pt_fenetre));
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
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 );
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).Envoyé par bassim
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.
le probleme c'est que je travaille avec Turbo C++ version 3.0 (sous_dos),
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 );
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
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![]()
Domage que je n'ai plus acces a CFront... ca aurait vraissemblablement plu a ton prof. :-)Envoyé par bassim
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.
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.
Il nous a demandé de faire un gestionnaire de fenetres qui crée les fenetresEnvoyé par Jean Marc Bourguet
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager