Partage
  • Partager sur Facebook
  • Partager sur Twitter

modification d'un attribut

    18 mai 2007 à 16:25:38

    Bonjour

    je vais essayer d'être le plus clair possible.Je veux modifier ou lire un attribut d'un objet A depuis un objet B. Pour respecter l'encapsulation j'ai créer la méthode qui va bien dans l'objet A.J'ai crée une instance de l'objet A dans objetB.h.Depuis l'objet B j'appelle la méthode. Tout se passe bien à la compilation mais la valeur retourné est 0 alors qu'il est différent de 0.Si j'essaye de lire cette valeur depuis le programme principal (main.cpp) ca marche.
    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2007 à 16:59:01

      Sans code ça va être difficile de t'aider. Peux-tu poster les parties concernées par ton problème? (méthodes et appels)
      • Partager sur Facebook
      • Partager sur Twitter
        18 mai 2007 à 17:28:38

        ok alors allons y gaiement:
        Code de objet A.h
        {
        private:
        int angle;

        public:
        int lire_angle();
        };

        Code de objet A.cpp
        int objet A::lire_angle()
        {
        return angle;
        }

        Code de objet B.h // objet depuis lequel je veux pouvoir lire la valeur de angle
        #include "objet A.h"
        {
        private:
        objet A instanceA // création d'une instance de l'objet A
        };
        Code de objet B.cpp
        #include "objet B.h"
        int an=instance A.lire_angle();

        la variable an contient 0 alors que angle est <> de 0.
        • Partager sur Facebook
        • Partager sur Twitter
          18 mai 2007 à 17:42:31

          private:
          //Code de objet A.h
          {
          int angle;

          public:
          int lire_angle();
          };

          //Code de objet A.cpp
          int objet A::lire_angle()
          {
          return angle;
          }

          //Code de objet B.h objet depuis lequel je veux pouvoir lire la valeur de angle
          #include "objet A.h"
          {
          private:
          objet A instanceA // création d'une instance de l'objet A
          };
          //Code de objet B.cpp
          #include "objet B.h"
          int an=instance A.lire_angle();



          simplement je dirais que tu appelles ton objet instanceA dans ton B.h et que ensuite tu rajoute une espace dans ton B.cpp : "int an=instance A.lire_angle();"

          Mais sinon je dirais qu'on ne vois nul part ou tu a initialisé la valeur de tes attributs. On ne voit pas non plus ton constructeur.
          • Partager sur Facebook
          • Partager sur Twitter
            18 mai 2007 à 17:49:46

            l'espace est juste une erreur de frappe mais il n'y a pas de problème sinon le compilo me l'aurait dit.Je rapelle que le programme compile et se lance sans problème.
            angle est initialisé dans un constructeur de manière aléatoire.Je ne l'ai pas mis dans le post pour ne pas surcharger mais cela marche.Mon problème est ciblé sur la lecture d'un attribut d'un objet depuis un autre objet.Le lecture de cet attribut fonctionne depuis le programme principal. ( je me répète)
            • Partager sur Facebook
            • Partager sur Twitter
              18 mai 2007 à 21:10:08

              Dans ce cas je vois bien se pointer l'erreur de syntaxe à deux balles (je sais que ton programme compile, mais il y a des erreurs de syntaxes qui passent au compilateur. Je suis bien placé pour le dire, je viens d'en avoir plein en débuggage d'un projet multitâche). Il faudrait pour qu'on puisse le résoudre, que l'on voit ton programme en entier, tu dois mal passer un include ou un truc comme ça, mauvaise visibilité de tes attributs ou alors mauvaise portés. Enfin il y a plein de connerie possible en C++.
              • Partager sur Facebook
              • Partager sur Twitter

              modification d'un attribut

              × 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