Vector affichage

Résolu
heleos Messages postés 4 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 18 novembre 2005 - 18 nov. 2005 à 00:22
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 18 nov. 2005 à 09:29
Slt tout le monde,



voila j ai un probleme avec ceci :



int main()

{

std::vector x(1);



int choix;



disMenuPrinc();

cin>>choix;

switch ( choix )

{

case 2:

disMenuCl();

int choix2;

cin>>choix2;

switch ( choix2 )

{

case 1:



string n=addNewClientNom();

string pr=addNewClientPrenom();

string a=addNewClientAdresse();

string v=addNewClientVille();

string p=addNewClientPays();

string ab=addNewClientAbon();

if (ab == "oui")

{

int typabon;

couttypabon;

ClientAbonne c(n,pr,a,v,p,typabon);

//tabClient.push_back(&c);

x[0] = &c;

x[0]->afficher();

}

else

{

Client c(n,pr,a,v,p);

//tabClient.push_back(&c);

x[0] = &c;

x[0]->afficher();

}

x[0]->afficher();

break;

}

break;

}

x[0]->afficher();



cout

2 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
18 nov. 2005 à 09:29
Ben oui, tu as un problème de portée ou de pointeur. Tu créer un objet,
tu ajoutes un pointeur dessus dans ton vector. Apres ton objet est
détruit, et donc le pointeur pointe sur rien du tout. Pour ca que ton
3eme appel plante. Faut etre plus rigoureux avec les pointeurs.


Au lieu de faire ca:

ClientAbonne c(n,pr,a,v,p,typabon);

x[0] = &c;



Au passage, ta méthode pour ajouter des éléments n'est pas terrible. Utilise push_back.

Bon voila ce qu'il faut écrire dans ton cas:



ClientAbonne * c = new ClientAbonne(n,pr,a,v,p,typabon);

x.push_back(c);



Et la ca fonctionnera. Oublie pas de delete tous les éléments du vector à la fin de ton programme
3
heleos Messages postés 4 Date d'inscription mardi 1 février 2005 Statut Membre Dernière intervention 18 novembre 2005
18 nov. 2005 à 00:24
P.S. J'ai pas oublié de ; ds la fct afficher() c'est une erreur de copier collier.
0
Rejoignez-nous