begin process at 2012 05 30 05:25:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Vector affichage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Vector affichage

vendredi 18 novembre 2005 à 00:22:03 | Vector affichage

heleos

Slt tout le monde,

voila j ai un probleme avec ceci :

int main()
{
   std::vector <Client*> 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;
         cout<<"Type d'abonnement : ";
         cin>>typabon;
         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<<endl;
  

   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

Les 3 premiers x[0]->afficher(); fonctionne sans probleme par contre le quatrième fonctionne pas, il coupe l'execution.
Je vous joins afficher() et les fonction de demande de saisie.

Merci pour votre aide,

Heleos

******************************************************************

void Client::afficher()
{
     cout<<"ok"<<endl;
     system("pause");
     cout<<"Nom : "<<nom<<endl<<"Prenom : "<<prenom<<endl
     cout<<"Adresse : "<<adresse<<endl<<"Ville : "<<ville<<endl
     cout<<"Pays : "<<pays<<endl;
}

static string addNewClientNom()
{
     string a;
     char  ligne[81];
     cout<<"Entrez le nom : ";
     cin.getline(ligne,80);
     cin.getline(ligne,80); a=ligne; cout<<endl;
     return a;
}

static string addNewClientPrenom()
{
     string a;
     char  ligne[81];
     cout<<"Entrez le prénom : ";
     cin.getline(ligne,80)    ;a=ligne; cout<<endl;
     return a;
}
static string addNewClientAdresse()
{
     string a;
     char  ligne[81];
     cout<<"Entrez l'adresse : ";
     cin.getline(ligne,80)    ;a=ligne; cout<<endl;
     return a;
}
static string addNewClientVille()
{
     string a;
     char  ligne[81];
     cout<<"Entrez la ville : ";
     cin.getline(ligne,80)    ;a=ligne; cout<<endl;
     return a;
}
static string addNewClientPays()
{
     string a;
     char ligne[81];
     cout<<"Entrez le pays : ";
     cin.getline(ligne,80)    ;a=ligne; cout<<endl;
     return a;
}
static string addNewClientAbon()
{
     string a;
     cout<<"Abonné (oui/non) : ";
     cin>>a;
     return a;
}

vendredi 18 novembre 2005 à 00:24:52 | Re : Vector affichage

heleos

P.S. J'ai pas oublié de ; ds la fct afficher() c'est une erreur de copier collier.
vendredi 18 novembre 2005 à 09:29:00 | Re : Vector affichage

luhtor

Réponse acceptée !
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



Cette discussion est classée dans : ligne, string, afficher, cout, cin


Répondre à ce message

Sujets en rapport avec ce message

myvar = new string [ par Tyroflan ] typedef char string[100];string *ligne;...main(){ligne = new string [2] // je crée donc 2 string, només ligne[0], ligne[1]...plus tard, il me faut un Pas De Solution??? [ par PsyCaDi ] Bonjour,Voilà, je veux faire un truc tout con avec des tableaux mais ça ne marche pas. Quelqu'un peut-il me dire ce qui n'est pas bon (sauf moi, ça je cin et cout [ par cabarrus ] je sais je suis une larve en programmation, c'est normale je suis un débutant. pouvez vous résoudre le problème suivant:Ecrire un programme qui demand Probleme String -> double et long [ par lebalrog ] Salut tout le monde!J'ai un prob urgent a resoudre (tres urgent meme)!je fais :ficin >> ligne;long r=atol(ligne);double a=atof(ligne);avec ligne="0,12 surcharge de l'operateur ">>" du cin [ par pounch ] bon voila mon problemej'aimerai parser une ligne de commande grace au cin et afficher un prompt lorsque j'ai fini de parser. Mais le cin n'a pas de me caractere speciaux a afficher en boucle [ par ranouf ] #include void main (){ cout cout cout}comment faire pour automatiser cette tache ?j'aurai besoin de savoir a koi correspon Visual C++ Free() [ par PRZYBYLSKI ] #include #include #include "stdafx.h"Question au Pro?Qu'es qui est faux docteurArrivé à free ça bombe#include <io probleme parametre [ par morgandetoi06 ] bonjour,j ai fait une fontion qui s appelle "afficher" qui est dans un fichier "afficher.cpp" et dans le programme qui appelle la fonction j ai donc m Question à la con sur un getline() [ par Killvador ] Salut tt le monde,G un petit problème:dans ce petit prog le début marche jusqu'a la getline() qu'on dirait que le prog l'a complétement zapé.(y passe cin.getline dans un Case : Marche pas !!! [ par Sixpion ] bonjour a tous !!on a un petit pb avec l'insertion de cin.getline dans des Case (voir code) il semblerai que le cin.getline fct bien dans le main mais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,638 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales