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 6
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
Rejoignez-nous