Tableau d'objets

nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 29 avril 2006 à 13:44
saibe Messages postés 46 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 16 avril 2009 - 2 mai 2006 à 05:15
Bonjour, je suis débutant en c++ et j'aimerais savoir comment faire pour créer un tableau dynamique d'objets, c'est à dire un tableau d'objet donc je puisse modifier la taille etc ..., sachant que ce tableau d'objet doit etre un des attributs d'un autre objet

J'ai donc le schéma suivant :

objet1
|
| - Variables ...
| - Tableau d'objets - obj[0]
- obj[1] ....


Merci d'avance de vos réponses

PS : Quelqu'un aurait-il le même problème que moi : depuis quelques temps, quand je me connecte sur cppfrance j'ai la fenetre suivante qui s'affiche :

http://www.hiboox.com/image.php?img=7vwuq5e.jpg

4 réponses

saibe Messages postés 46 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 16 avril 2009
29 avril 2006 à 18:57
salut !
même débutant si t'es motivé tu vas vite comprendre...
personnellement j'utilise 2 types de tableau bien pratique : CTypedPtrList et CList
sous VC6
pour les utiliser tu dois rajouter
#include dans le StdAfx.h

puis tu les utilises comme ca
tu crées ton objet dérivé de CObject
class MonObjet :: public CObject
{
   //avec tout ce que tu veux dedans : fonctions, variables
};

ensuite dans ton appli ou dans une autre class tu définis ta liste d'objets
(je te donne un exemple pour une liste de pointeurs car c'est celle que j'utilise le plus...
la CList est une liste objets mais elle est moins souple...)

CTypedPtrList<CObList, MonObjet*> m_ListeObjets;

que tu manipules comme ça :
MonObjet* objet = NULL;
objet = new MonObjet();
m_ListeObjets.AddTail(objet); // pour ajouter

et tu peux parcourir ta liste comme suit :
POSITION pos = m_ListeObjets.GetHeadPosition();
while(pos)
{
   objet = m_ListeObjets.GetNext(pos);
}
sous VC6 tu pourras voir toutes les fonctions de la liste.

j'espère avoir été clair...
saibe
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 20:27
Mais je pense que avant d'utiliser des abstractions. Il faudrait savoir utiliser les outils de bases:


class ton_objet

{

...

};


Dans ton main


ton_objet * mon_tableau_objet = new ton_objet[10]; // <= créer un tablea de 10 objets.


Donc ca, ca créer un tableau d'objet. Pour avoir une taille variable,
tu en récréés un nouveau plus grand et tu copies l'ancien dans le
nouveau. Voila comment il faudrait faire.


Perso, je ne connais pas VC, mais juste les outils du C++.

En C++, on utiliserait la STL.

#include <vector>

using namespace std;


dans ton main:

vector<ton_objet> mon_tableau_taille_variable;

ton_objet   un_objet;

mon_tableau_taille_variable.push_back(un_objet); // ajoute en fin de tableau un élément.


on accèdre aux objets par:

mon_tableau_taille_variable[0]; <= accès au premier objet

mon_tableau_taille_variable.size(); <= retourne la taille du tableau.


Pour un peu plus de détails:

http://allproginfo.free.fr/Programmation/Cpp/Vector.html


Pour tous les détails:

http://www.sgi.com/tech/stl/index.html
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 20:38
Tiens sinon j'avais pas noté, mais:
[auteurdetail.aspx?ID=104485 saibe] => CTypedPtrList et CList ne sont probablement pas des tableaux mais des listes.
0
saibe Messages postés 46 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 16 avril 2009
2 mai 2006 à 05:15
salut luhtor !
en effet ce sont des listes mais tel que j'ai compris la question ct mettre à la suite l'un de l'autre des objets sans forcément avoir besoin d'indexation. donc ici, tableau ou liste c'est pareil. qu'en penses tu ?
saibe
0
Rejoignez-nous