Création d'objets dans une boucle

nierpa
Messages postés
6
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
8 février 2006
- 6 févr. 2006 à 18:11
wxccxw
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011
- 8 févr. 2006 à 11:53
Bonjour à tous,
voilà ma question :
Je lis dans un fichier texte "x", "y","z" et "genre", qui sont les coordonnées de points ainsi que leur genre (sommet S ou point annexe PA d'un graphe). J'aimerais qu'à chaque lecture de ces 4 attributs, une fonction crée un objet "point" (ma classe "point" étant définie) et lui affecte ces attributs. Est-ce possible de créer dynamiquement dans une boucle des objets, leur donner un nom, etc... ou dois je connaitre et définir un nombre d'objets au départ ?
Merci d'avance de votre aide.

Nierpa

5 réponses

luhtor
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
6 févr. 2006 à 18:44
Suffit de déclarer un tableau de point et un tableau de genre, de la taille suffisante avant de rentrer dans ta boucle.
0
KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
7 févr. 2006 à 09:54
Imaginons un constructeur de ta classe Point(const float& x,const float& y,const float& z, const Genre& g);

sert toi du conteneur aproprié a ton besoin, ici un vector :

float x,y,z;
Genre g;
std::vector vectorPoint;
std::ifstream file("fichierDePoint.txt");
while(file.good())
{
file >> x >> y >> z >> g; // en considérant que Genre ai redéfini l'operateur >>
vectorPoint.push_back(new Point(x,y,z,g));
}
file.close();

KeniiyK
0
nierpa
Messages postés
6
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
8 février 2006

7 févr. 2006 à 11:45
Merci beaucoup de vos réponses !

Nierpa
0
KeniiyK
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
2 novembre 2007
2
7 févr. 2006 à 12:10
J'ai répondu un peu vite...
Encore mieux, redéfini dans ta classe Point l'opérateur >>, ainsi :
...
Point *p;
while(file.good())
{
p=new Point();
file >> *p;
vectorPoint.push_back(p);
}
file.close();

Ou sans pointeur :

std::vector vectorPoint;
std::ifstream file("fichierDePoint.txt");
Point p;
while(file.good())
{
file >> p;
vectorPoint.push_back(p); // attention au constructeur de copie !!
}
file.close();

KeniiyK
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wxccxw
Messages postés
755
Date d'inscription
samedi 15 mai 2004
Statut
Membre
Dernière intervention
30 janvier 2011

8 févr. 2006 à 11:53
c'est vrai que KeniyK est plus correct et plus claire
0