Partage
  • Partager sur Facebook
  • Partager sur Twitter

Paramètre constructeur

Passer un objet en paramètre

Sujet résolu
    2 mars 2008 à 16:31:58

    Bonjour à tous,
    Je me suis mis au c++ il y a peu pour connaitre un autre langage que le java et c'est peut être la transition java-c++ qui me fait faire des erreurs mais pour le coup je comprend vraiment pas :

    J'ai une classe Plateau (qui est une fenêtre et qui va contenir tout un tas de chose comme un personnage, des briques etc...) ici le .h:
    1. #ifndef DEF_PLATEAU
    2. #define DEF_PLATEAU
    3. #include <QApplication>
    4. #include <QWidget>
    5. #include "Joueur.h"
    6. class Plateau : public QWidget
    7. {
    8.     public:
    9.     Plateau();
    10.     void Afficher();
    11.     private:
    12.     Joueur joujou;
    13. };
    14. #endif


    et donc une classe joueur, ici le .h :
    1. #ifndef DEF_JOUEUR
    2. #define DEF_JOUEUR
    3. #include <QApplication>
    4. #include <QWidget>
    5. #include <QLabel>
    6. #include "Plateau.h"
    7. class Joueur : public QWidget
    8. {
    9.     public:
    10.     Joueur(Plateau &p);
    11.     void Afficher();
    12.     private:
    13.     QLabel *lbl;
    14.     Plateau plateau;
    15. };
    16. #endif


    Mes .cpp ne contiennent rien de particulier pour l'instant si ce n'est l'ossature de mes constructeurs et méthodes.
    Lorsque je compile, Code Blocks me dit qu'il y a une erreur dans le joueur.h :
    error: expected `)' before '&' token|
    error: `Plateau' does not name a type|

    Voila je comprend pas trop ce qui ne va pas :(

    • Partager sur Facebook
    • Partager sur Twitter
      2 mars 2008 à 17:12:26

      Je ne pense pas que l'erreur est due à ça, mais il y a déjà un problème évident dans ton code :

      Ta classe Joueur contient un Plateau.
      Mais ta classe Plateau contient un Joueur.

      Tu vois le problème ?

      Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> .... Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> Joueur --contient--> Plateau --contient--> ...

      = récursion à l'infinie -> plus de mémoire -> problème.

      Tu es sur que tu ne voulais pas plutôt que tes classes contiennent des pointeurs ?
      • Partager sur Facebook
      • Partager sur Twitter
        2 mars 2008 à 18:00:22

        Oué si en fait le plateau va forcement contenir un joueur et j'ai besoin de la référence du plateau dans la classe joueur.
        On se pose pas ce genre de question en java :p
        • Partager sur Facebook
        • Partager sur Twitter
          2 mars 2008 à 18:04:41

          T'as autant contenir un pointeur c'est plus clair, par contre je pense pas que ça va résoudre ton problème.

          Ps : Je connais pas java.
          • Partager sur Facebook
          • Partager sur Twitter
            2 mars 2008 à 18:05:38

            FAQ C++ de developpez : classes qui s'utilisent l'une l'autre.
            • Partager sur Facebook
            • Partager sur Twitter
            C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
              2 mars 2008 à 18:12:20

              Effectivement, ma réponse était dans la faq C++ de developpez (http://cpp.developpez.com/faq/cpp/?page=classes#CLASS_reference_croisee )

              Merci :)
              • Partager sur Facebook
              • Partager sur Twitter
                2 mars 2008 à 19:35:22

                Mais il me semble que si tu laisses ça comme ça tu aura quand même un problème de mémoire non ?
                • Partager sur Facebook
                • Partager sur Twitter

                Paramètre constructeur

                × 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