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 :

Problème des classes


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Problème des classes
    Bonjour,

    Voila j'ai un probleme avec les classes et je ne sais pas si ca marche pas parce que je suis pas logique ou je ne connais pas certaines commandes.

    Voiture.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class voiture
    {
         public:
              //methodes
              std::string get_marque() const;
         protected:
              //attributs
              std::string m_marque;
              Moteur m_moteur;
    };
    Moteur.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Moteur
    {
         public:
              Moteur(Voiture)
              //methodes
         protected:
              //attributs
              int m_num_serie;
    };
    Voiture.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    std::string Voiture::get_marque() const
    {
          return m_marque;
    }
    Moteur.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Moteur::Moteur(Voiture voiture)
    {
         if(voiture.get_marque()=="AB")
               m_num_serie=45;
         //else if.....etc pour les autres
    }
    J'aimerai récupérer m_marque de Voiture pour initialiser m_num_serie dans le constructeur de Moteur.

    Supposons que:
    si m_marque = AB alors m_num_serie = 45
    si m_marque = JG alors n_num_serie = 8966
    si m_marque = SF alors m_num_serie = 239
    etc..

    J'espère que je suis clair.
    Et donc ca ne fonctionne pas le compilateur me dis qui connai pas Voiture dans Moteur.h
    -> error: field 'Voiture' as incomplete type

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Tu vas avoir un problème de conception.
    Pour rappel, l'ordre d'appel des constructeurs est :
    1/ D'abord ceux des membres
    2/ Ensuite celui de la classe.
    Donc Moteur::Moteur est appelée avant Voiture::Voiture puisque m_moteur est membre de Voiture. Donc tu ne peux lui passer en argument le voiture en train de construire.
    En d'autres termes, si tu as ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Voiture::Voiture():m_moteur(*this){...}
    C'est une erreur. Ton compilateur doit probablement râler...

    [EDIT] : pourquoi ne pas passer la marque directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Voiture::Voiture(std::string const &marque_)
       :m_marque(marque_)
      ,m_moteur(marque_)// c'est bien marque_ et non m_marque !
    {...}

Discussions similaires

  1. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 16h00
  2. Problème avec des Class en asp
    Par titou250 dans le forum ASP
    Réponses: 3
    Dernier message: 06/06/2006, 13h22
  3. [Débutant] J'ai un problème avec la compilation des classes
    Par Paulinho dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/11/2005, 14h23
  4. Réponses: 9
    Dernier message: 25/09/2005, 16h33
  5. [JAXB][XSD] Problème lors de la génération des classes
    Par charlot44 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/06/2005, 16h10

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