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.
Version imprimable
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.
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 ? :koi:Citation:
Envoyé par Médinoc
Pour le reste :Code:
1
2
3 #include <vector> std::vector<TFenetre*> Tab;
http://c.developpez.com/faq/cpp/?page=STL#STL_vector
Arrrrrg !!!
Citation:
Code:TFenetre ** pt_pt_fenetre = malloc(10*sizeof(*pt_pt_fenetre));
:oops:Citation:
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];
merci déja de me répondre ,
Je suis encore débutant en C++,alors j'ai pas compris le TFenetre **Code:
1
2 TFenetre ** 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:
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 ???
Utilise vector.
Code:
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).Citation:
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.
le probleme c'est que je travaille avec Turbo C++ version 3.0 (sous_dos),Code:
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.
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 :cry:
Domage que je n'ai plus acces a CFront... ca aurait vraissemblablement plu a ton prof. :-)Citation:
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.
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 fenetresCitation:
Envoyé 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 ...