IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

classes imbriquées


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut classes imbriquées
    salut!!
    Dans mon analyse je me retrouve confronté au problème suivant , je ne sais pas s'il est réalisable:

    Deux classes A et B.

    Ma classe A contient un attribut de type B*.
    Une méthode de ma classe B prend comme paramètre un pointeur de type A.

    Et alors me direz vous? (peut-etre) et bin je doit avoir #include "A.h" dans b.h et un #include "b.h" dans a.h....infini.

    J'ai essaye de tout mettre dans le meme .h et tout et tout, mais la il faudrait que les deux soit au-dessus des deux pour compiler...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class A{
           public:
              B * objB;
            }
    class B{
             public:
                afficher(A * objA);
             }
    merci merci!

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 370
    Points : 40 164
    Points
    40 164
    Par défaut
    bien le bonjour,

    outre le fait qu'on pourrait débattre sur la conception et ta gestion de classes pour savoir s'il n'y a pas d'autre moyen d'inclure des classes, je pense que ça pourrait t'aider de mettre un
    juste avant la déclaration de ta classe A, comme ça le comiplateur sait qu'une classe B existe

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    je suis bien d'accord avec toi sur ta phrase et je vais tester la deuxieme

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    en effet ya une bonne avancée, mais là il me met:
    field 'objB' has incomplete type.

  5. #5
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 370
    Points : 40 164
    Points
    40 164
    Par défaut
    manquerait pas un ; à la fin de chacune de tes classes ?

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    pour le principe de mes classe ca s'articule comme ca:

    une classe personnage, avec point de vies et d'attaque et compagnie.

    une classe specialité, contenant toutes les méthodes "spéciales" que touts les personnages n'ont pas. (soin, double attaque, coup d'oreille..).

    J'ai choisi cette forme car il eiste une autre classe "groupe" qui sera un conteneur de personnage, des equipes quoi.

    Et donc dans cette classe ya un vecteur de personnages<---

    C'est pourquoi je n'ai pas choisi l'héritage pour chaque specialité, car dans ce cas chaque perso aurait serait d'un type différent et donc si je fais un vecteur de personnages ensuite je perds l'accès aux methodes des classes filles (personnage->coup d'oreille() does not exist )....

    J'espere avoir été compréhesible
    merci merci!!

  7. #7
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par khayyam90
    manquerait pas un ; à la fin de chacune de tes classes ?

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    oui pour les ; veuillez m'en excusser et ne pas en tenir compte pour le fonctionnement, c'est juste ecrit vite fait (je sais ce n'est pas une excuze..(alors pourquoi je dis tout ca....));

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 108
    Points : 65
    Points
    65
    Par défaut
    par contre une meme erreur de ce type s'est glissée dans mon vrai code, en effet dans la classe A l'attribut B *obB manquait le *. Et maintenant apparemment ca le fait.... ya plus qu'a tester. merci merci

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Points : 130
    Points
    130
    Par défaut
    c'est chaud de démarrer le code d'un jeu de role sans avoir de solide base en C++.

    Pour les includes en boucle, il y'a une solution.
    Dans chaque header de classe tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifdef nomdemaclass_h
    #define nomdemaclass_h
     
    class nomdemaclass
    {
     
    };
     
    #endif
    Comme ca pas de boucle. C'est bien plus propre que tout mettre dans un seul header.

    En revanche si dans le .h tu références des pointeurs sur un type, tu peux faire une forward déclaration comme qqn te l'a expliqué plus haut : class B;

    Voila.

  11. #11
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. Réponses: 6
    Dernier message: 28/12/2006, 18h22
  3. Classe imbriquée et son constructeur
    Par toninlg dans le forum C++
    Réponses: 7
    Dernier message: 30/09/2006, 06h21
  4. Classe imbriquée
    Par dj.motte dans le forum C++
    Réponses: 10
    Dernier message: 13/04/2006, 07h34
  5. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo