cout<<"--------------Encodage de la piece-----------"<<endl;
Identifiant i;
char l;int a;
cout<<"Inserer la lettre de l'id alphanumerique de la piece"<<endl;
cin>>l;
i.setLettre(l);
cout<<"Quelle est son annee d acquisition?"<<endl;
cin>>a;
i.setAnnee_dacq(a);
p.setIdentifiant(i);
etc.....
return p;
Le probleme se pose qd je veux afficher l'id de la piece avec ailleur de la methode encode().
Code :
cout<<"---l'id de la Piece est"<<p.id<<endl;
il me donne comme resultat l'id que j'ai mis dans mon constructeur par defaut.
d'ou pourrai venir le probleme???
Ma 2éme question comment je peux faire un cin>>sur une chaine de caracteres qui contient un espace car avec cin>>machaine il me coupe tout apres l'espace.
Ta méthode Encode() retourne un objet de classe Piece, et pas un pointeur ni une référence (normal car tu crée l'objet sur la pile en local à ta méthode).
Par contre, le fait de retourner un objet, créer un objet en faisant une copie. N'aurais-tu pas un pointeur dans ta classe identifiant qui nécessiterait l'existance d'un constructeur par recopie de chaque classe ?
Il préférable de toujours suivre la forme canonique de Coplien (faire un constructeur, destructeur virtuel, constructeur par recopie et l'opérateur d'affectation).
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.