LePhasme Posté(e) le 25 novembre 2005 Partager Posté(e) le 25 novembre 2005 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 More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.