Aller au contenu

[Resolu] C++ suis un gros boulet


LePhasme

Messages recommandés

Comme un c*n je fais une copie de l'objet puis j'appelle la fonction modifier sur la copie, donc forcément ca fonctionne pas sur l'objet original, ya des fois comme ca ou jme jeterai bien par la fenêtre...

/* Fonction qui me sert pour l'affichage de menu, dans le case 2, quand je fais
  afficher le client qui doit etre modifier je me retrouve avec le client de
  départ. */

void Menu::gestionClients(vector<Client> &listeCli )
{
system("Cls");
int choix;
cout << "Gestion des clients" << endl << "*******************" << endl;
cout << "1. Ajout de client." << endl << "2. Modification de client." << endl;
cout << "3. Suppression de client." << endl << "4. Liste des clients."
  << "0. Menu precedent" << endl;
cout << "Votre choix : ";
cin >> choix;
while ( choix != 0 )
{
 switch (choix)
 {
  case 1 :
Menu::ajoutClient(listeCli); break;
  case 2 :
/* Partie qui nous interesse, j'appelle la fonction modificationClient en lui
  transmettant le vector listeCli qui contient la liste des clients par référence */
Menu::modificationClient(listeCli);
cout << &listeCli << endl; // l'adresse affichée correspond a celle dans modificationClient()
listeCli[0].affiche(); // c'est ici que je vois que mon objet est pas modifie
system("pause");
break;
  case 3 :
Menu::suppressionClient(listeCli); break;
  case 4 :
Menu::listeClient(listeCli); break;
  default :
cout << "Entrez un nombre inferieur a 4 svp." << endl; 
system("PAUSE"); break;
 }
 system("cls");
 cout << "Interieur while" << endl;
 cout << "Gestion des clients" << endl << "*******************" << endl;
 cout << "1. Ajout de client." << endl << "2. Modification de client." << endl;
 cout << "3. Suppression de client." << endl << "4. Liste des clients." << endl
   << "0. Menu precedent" << endl;
 cout << "Votre choix : ";
 cin >> choix; 
}
}

void Menu::modificationClient(vector<Client> &listeCli)
{
int num;
system("CLS");
Menu::listeClient(listeCli);
cout << "Numero du client a modifier : ";
cin >> num;
Client mod = listeCli[num-1];
mod.modifier(); // appel de la fonction modification du client
cout << &listeCli << endl; // affichage de l'adresse, identique à celle dans gestionClient
system("pause");
}

/* La fonction modification en elle-même, les champs de l'objet sont de type string */

void Client::modifier( void )
{
char chaine[41];
system("cls");
cout << "Modification du client" << endl << "*******************" << endl;
cout << "Nom du client : ";
cin.getline(chaine,40);
cin.getline(chaine,30);
this->nom = chaine;
cout << "Prenom : ";
cin.getline(chaine,25);
this->prenom = chaine;
cout << "Adresse : ";
cin.getline(chaine,40);
this->adresse = chaine;
cout << "Numero de telephone : ";
cin.getline(chaine,20);
this->numtel = chaine;
cout << "Modifications enregistree" << endl;
system("Pause");
this->affiche(); // L'affichage est correct.
system("pause");
}

/* Vu le problème entre fonction appelante/appelée je pensais à un problème
  de pile mais vu que les 2 adresses sont identiques... */

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...