Tom's Guide > Forum > Programmation > probleme d'affichage d'un objet
Mot :    Pseudo :           
 

Bonsoir à tous
mon programme consiste à creer des pieces(classe Piece) chaque piece a un identifiant(classe Identifiant).

class Piece
{
private:

Identifiant id;
char category[SIZE];
char description[SIZE];

etc........

j'ai une methode Encode() qui retourne une Piece

Code :
  1. Piece Piece::Encode()
  2. {
  3.     Piece p;
  4.         cout<<"--------------Encodage de la piece-----------"<<endl;
  5.     Identifiant i;
  6.     char l;int a;
  7.     cout<<"Inserer la lettre de l'id alphanumerique de la piece"<<endl;
  8.     cin>>l;
  9.     i.setLettre(l);
  10.     cout<<"Quelle est son annee d acquisition?"<<endl;
  11.     cin>>a;
  12.     i.setAnnee_dacq(a);
  13.     p.setIdentifiant(i);
  14. etc.....
  15. return p;



Le probleme se pose qd je veux afficher l'id de la piece avec ailleur de la methode encode().

Code :
  1. 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.

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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).

Répondre à CRicky

voici ma classe Identifiant
elle ne contient pas grand chose

Code :
  1. class Identifiant
  2. {
  3. private:
  4.     char lettre;
  5.     int  annee;
  6. public:
  7.     Identifiant();
  8.     Identifiant(char le,int an);
  9.     Identifiant(Identifiant& id);



lelle ne contient de pointeur.

HELPPPPPPPPPPP

Répondre à alexorcet

Je vois que tu as fait un constructeur par recopie, l'as-tu correctement remplit comme suit ?

Code :
  1. Identifiant::Identifiant(Identifiant& id)
  2. {
  3.   lettre = id.lettre;
  4.   annee = id.anne;
  5. }

Répondre à CRicky
Tom's Guide > Forum > Programmation > probleme d'affichage d'un objet
Aller à :

Il y a 904 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

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.

Répondre Annuler
Liens