Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3373 connectés 

 


Dernière réponse
Sujet : petit prob de débutant
SVCDman Merci beaucoup ça fonctionne parfaitement maintenant!!!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
SVCDman Merci beaucoup ça fonctionne parfaitement maintenant!!!
smaragdus Plus sûr :
 

Code :
  1. #define TAILLE_MAX_NOM 20
  2. class Client
  3. {
  4. public:
  5.        Client();
  6.        const char* get_Nom() const;
  7.        void set_Nom(const char* left);
  8. private:
  9.        char Nom[TAILLE_MAX_NOM];
  10. };

Harkonnen Bon, dans mon infinie bonté, je te donne le corrigé. En bas de mon article. Comme ça, tu pourras essayer de le faire avant de le lire
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
D'abord la fonction principale :

Code :
  1. #include "Client.h"
  2. #include <iostream.h>
  3. int main(void)
  4. {
  5.        char string_temp [20] ;
  6.        char *affich = NULL;
  7.        Client toto;
  8.        cout << "Donner nom du client" << endl;
  9.        cin >>   string_temp ;
  10.        toto.set_Nom (string_temp) ;
  11.        affich = toto.get_Nom ();
  12.        cout << affich << endl;
  13. }


J'ai remplacé le new affich[20] par une initialisation de pointeur. Ce que tu faisais était inutile, vu que la mémoire est déja réservée.
 
Je t'ai aussi rajouté l'inclusion d'iostream, pour déclarer cout.
 
Ensuite, le header de ta classe :

Code :
  1. class Client
  2. {
  3. public:
  4.         Client();
  5.         char *get_Nom()  ;
  6.         void set_Nom(char left[20]);
  7. private:
  8.         char Nom[20];
  9. };


Je t'ai inclus la déclaration du constructeur, et je t'ai placé en private la chaine Nom, vu que tu l'initialises et que tu la lis via des méthode publiques.
 
Enfin, la classe Client :

Code :
  1. #include "Client.h"
  2. #include <string.h>
  3. Client::Client()
  4. {
  5. }
  6. char *Client::get_Nom()
  7. {
  8.         return Nom;
  9. }
  10.  
  11. void Client::set_Nom(char left[20])
  12. {
  13.         strcpy(Nom,left) ;
  14. }


Nul besoin d'initialiser Nom dans le constructeur, vu que tu l'initialises dans la fonction set_Nom.
 
Voila, j'ai pas testé ce code, mais s'il y a des erreurs, je te laisse les chercher et les corriger ;)
 
A+

Harkonnen et puis aussi, déclares ton constructeur dans le fichier d'entete, n'oublie pas l'accolade fermante de ton constructeur, déclares tes variables membres en private, etc...
SVCDman merci  
je sais je suis nul en programmation, mais je débute.
Harkonnen ouh la la...
j'ai vaguement regardé, mais ton source est truffé d'erreurs !
 
je commence :

Code :
  1. void main()
  2. {
  3. char string_temp [100] ;
  4. Client toto;
  5. cout << "Donner nom du client" << endl;
  6. cin >>   string_temp ;
  7. toto.set_Nom (string_temp ) ;
  8. affich = new char [20] ;
  9. affich = toto.get_Nom ();
  10. cout << affich << endl;
  11. }
  12. -----------------------------------
  13. //Client.h  
  14. class Client
  15. {
  16. char * Nom;
  17. char * get_Nom()  ;
  18. void set_Nom(char left [20]);
  19. }


 
1ere erreur : set_Nom prend une chaine de 20 caractères en argument, et tu lui fournis une chaine de 100 caractères maxi
 

Code :
  1. strcat ( Nom , "" );


 
2ème erreur :  je pense que tu ferais mieux d'utiliser strcpy...
 

Code :
  1. affich = new char [20] ;


 
3ème erreur : il est ou le delete correspondant ?
 
y'en a surement d'autres, mais corrige déja celles-ci...

SVCDman EN C++
désolé j'avais oublié....
SVCDman //main.cpp
 
#include "Client.h"
void main()
{
char string_temp [100] ;
Client toto;
cout << "Donner nom du client" << endl;
cin >>   string_temp ;
toto.set_Nom (string_temp ) ;
affich = new char [20] ;
affich = toto.get_Nom ();
cout << affich << endl;
}
-----------------------------------
//Client.h
 
class Client
{
char * Nom;
char * get_Nom()  ;
void set_Nom(char left [20]);
}
------------------------------------
//client.cpp
#include "Client.h"
 
 
Client::Client()
{
strcat ( Nom , "" );
char * Client::get_Nom()
{
    return Nom;
}
 
     
void Client::set_Nom(char left[20])
{
    strcat (Nom , left) ;
}
juju_le_barbare

Cherrytree a écrit a écrit :

En quel langage ?  



j'allais dire la même chose que harkonnen et CherryTree ;))

Cherrytree

SVCDman a écrit a écrit :

mon problème est simple:
j'ai une classe client , dans laquelle je declare le nom, prenom,ville et des methodes set_nom, get_nom, ...
 
je voudrais faire un main qui demande "nom du client", on met un nom, il fait un set_nom, puis il affiche le resultat :"le nom est :" et il utilise le get_nom.
 
Mais je n'arrive pas à faire fonctionner ce prog.
Pouvez vous m'aider?
Merci  



En quel langage ?

Harkonnen On pourrait t'aider si tu postais ton source...
SVCDman mon problème est simple:
j'ai une classe client , dans laquelle je declare le nom, prenom,ville et des methodes set_nom, get_nom, ...
 
je voudrais faire un main qui demande "nom du client", on met un nom, il fait un set_nom, puis il affiche le resultat :"le nom est :" et il utilise le get_nom.
 
Mais je n'arrive pas à faire fonctionner ce prog.
Pouvez vous m'aider?
Merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)