Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C++ ]fonction pour manipuler des objets

je n'y arrive pas

Anonyme
    12 mars 2006 à 15:59:12

    Bonjour a tous.
    Pour m'entrainer au C++ je me suis "amusé" avec cree des class et des objets.
    Cala marche bien mais j'ai quand meme un problemme.
    Je souhaite cree une fonction capable de modifier un attribut préci
    ou de lancer une méthode donnée de n'importe qu'elle objet précisé.
    Et c'est la que cela coince car je n'y arrive pas .
    Si quelque peut me donner des idée ou des bouts de code ,je l'en remercie.

    P.S:Voici mon code:
    fichier essai1.cpp:

    #include <iostream>
    //on inclue les prototypes
    #include "essai1.h"

    using namespace std;
    //class personage
    class perso
    {
    //toutes las variable sont public ‚ on sa casse pas la tete
    public:
    long a‚b;//pour les fonction
    char nom[50];//le nom
    char choix[50];//le choix
    long age;//l'age
    long num_perso; //le numero du perso

        void lire(void)
        {
        a=1;
        b=0;
        //pour eviter de repeter bonjour
        if(num_perso <2)
        cout << "Bonjour : "<< endl ;
        cout << "Entrez le nom de du personnage  "<< num_perso <<" : ";
        //pour dire que l'on doit ecrire le nom
        a=1;
        ecrire();
        cout << endl <<"Entrez son age : ";
        //pour dire que l'on doit ecrire l'age
        a=2;
        ecrire();
        //pour dire que l'on doit resumer ce que l'on a ecrit
        if(a==3)
        cout << endl<<"Le personage s'appele " << nom << " et a "<< age << " ans \n" <<endl;
        }
       
        void ecrire(void)
        {
        if(a==1)   
        cin >> nom;
        if(a==2)
        cin >> age;
        a=3;
        if(b==4)
        cin >> choix;
        }
       
        void choisir(void)
        {
        //demande de choisir ce qu'il fait
        cout <<"Que fait le personnage "<<num_perso<<" maintenant :  "<<endl;
        b=4;
        ecrire();
        cout <<"Tres bien ‚il decide de  "<< choix <<" .Il a raison"<< endl;
        }

    };



    int main()
    {
    long a=1;
    //defini 2 objet : Joueur1  et Joueur2
    perso Joueur1‚Joueur2;

    //des 2 pointeurs sur eux
    perso *p1‚*p2;

    //assigne le 1er pointeur
    p1=&Joueur1;

    //assigne le 2eme
    p2=&Joueur2;

    //pour le perso 1
    p1–>num_perso=1;
    p1–>lire();
    p1–>choisir();

    //pour le perso 2
    p2–>num_perso=2;
    p2–>lire();
    p2–>choisir();

    //je sais que ce n'est pas portable mais bon ‚ je m'en contre fo**
    system("PAUSE");       
    return 0;
    }



    et le ficier essai1.h

    void ecire(void);
    void lire(void);
    void choisir(void);
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2006 à 16:12:51

      Faire une classe avec tout en public n'a aucun interet. Autant faire une structure...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        12 mars 2006 à 16:23:08

        Si toutes les variables de ma class sont en public c'est car je n'ai pas mis dans mon code celles qui sont en prive/protected.
        C'est tout.
        • Partager sur Facebook
        • Partager sur Twitter
          13 mars 2006 à 17:15:51

          moi je fais pas comme ca pour mes class mais plutôt :
          // classe.h

          #ifndef BIBI_H
          #define BIBI_H

          #include <string>

          class truck
          {
             int a‚b‚c;
             std::string chaine;

           public:
             truck();
             ~truck();

             void set_a(int n);
             int get_b();
             std::string get_chaine();
          }
          #endif

          // classe.cpp
          #include "classe.h"

          truck::truck()
          {
             c=1;
          }

          void truck::set_a(int n)
          {
             a=n;
          }

          int truck::get_b()
          {
             return b;
          }

          std::string truck::get_chaine ()
          {
            return chaine;
          }

          • Partager sur Facebook
          • Partager sur Twitter
            13 mars 2006 à 17:21:30

            Moi aussi, je fais plutot ça...
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              13 mars 2006 à 17:37:19

              Si j'utilise ma mathode c'est car je n'aime pas trop l'operateur '::'. Mais elle semble est pas trop mal , je vais l'esayer . Sinon j'ai reussi.
              j'ai cree un pointeur sur l'atribut que je passe a une fonction avec la valeur que l'attribut doit prendre.
              • Partager sur Facebook
              • Partager sur Twitter
                13 mars 2006 à 18:01:09

                sinon on m'a déconseiller de mettre des 'cout' et 'cin' dans les methodes de class, pour faire abstraction a l'affichage, par exemple si tu veux plus tard utiliser la SDL ou une autre API c'est plus facile car tu n'aura pas a modifier le code de ta classe.

                Donc fait plutôt comme moi avec le string, une fonction qui modifie le string et une autre qui la revois et tu fait une autre fonction a part ou dans le main qui demande une chaine ou un nombre.
                • Partager sur Facebook
                • Partager sur Twitter

                [C++ ]fonction pour manipuler des objets

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown