Creation d'objet

Résolu
Hugo Dam Messages postés 13 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 28 avril 2008 - 14 févr. 2008 à 10:57
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 15 févr. 2008 à 17:44
Bonjour,
J'ai un projet en C++ qui consiste à gérer un zoo. Pour créer un objet de type zoo il faut taper :
zoo nom_zoo(nom_du_zoo);
Cependant j'aimerai que l'utilisateur du programmme puisse lui même choisir le nom de l'objet.
J'aimerai donc savoir comment faire pour créer un objet en tapant le nom au clavier.
Merci
Au revoir

8 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 févr. 2008 à 11:57
Après relecture, il faudrait peut etre initialisé pZoo1 et pZoo2 a NULL :

zoo * pZoo1 = NULL;
zoo * pZoo2 = NULL;

Sans ca l'appel à CreerZoo risque de planter.

Shell
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
14 févr. 2008 à 12:52
void CreerZoo(zoo * pZoo, const char nom_zoo[])
{
   pZoo = new zoo(nom_zoo);
}
=> Ca marche pas ca.

void CreerZoo(zoo * & pZoo, const char nom_zoo[])

{

   pZoo = new zoo(nom_zoo);

}
=> Ca par contre, ca marche.
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 févr. 2008 à 14:21
Merci luhtor pour ta correction, au moins un qui a les yeux en face des trous ^^

Shell
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 févr. 2008 à 11:24
Salut,
Essayes un truc du genre :

void CreerZoo(zoo * pZoo, const char nom_zoo[])
{
   pZoo = new zoo(nom_zoo);
}

int main()
{
   zoo * pZoo1;
   zoo * pZoo2;
   char szBuffer[256];

   printf("Nom zoo 1 : ");
   scanf("%s", szBuffer);
   CreerZoo(pZoo1, szBuffer);    

   printf("Nom zoo 2 : ");
   scanf("%s", szBuffer);
   CreerZoo(pZoo2, szBuffer);  

   return 0;
}

Shell
0

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

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
14 févr. 2008 à 12:11
Tout compte fait c'est pas une bonne idée de mettre le new dans une fonction séparée, il y a risque de plantage. Reporte le directement dans le code a la place de CreerZoo, puis n'oublie pas de le delete en fin de traitement.

Désolé pour tout ces post, ce week end sera consacré au dodo ^^

Shell
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 févr. 2008 à 12:57
Salut,


Heu une petite question svp...


* &


C'est particulier ça... Un pointeur sur une référence ?

En quoi la solution de DeAtHCrAsH ne marche pas ?

(Compile sans warning sous VC6 et g++, tourne sans problèmes...)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
15 févr. 2008 à 16:56
Non c'est une référence sur un pointeur. Une référence sur un type avec un type qui peut etre "int", "char", "int*", "char**", "float".

"En quoi la solution de DeAtHCrAsH ne marche pas ?"
=> Réfléchis... le pointeur est copié donc jamais modifié. Imagines que tu envois un entier au lieu du pointeur.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 févr. 2008 à 17:44
Ah vi je suis c*n.

Merci.
0
Rejoignez-nous