bonjour,
J'ai un exercice à faire avec un diagramme avec agrégation et héritage :
diagramme.jpg
question : Déclarez la définition des classes CAutomobile, CMoteur, CMoteurEssence dans un fichier d’entête personnalisé. Écrivez dans un fichier .cpp propre à chaque classe, son constructeur et sa méthode Afficher( ).
mon codage :
FICHIERS .h
Code:/** * @(#) CAutomobile.h */ #ifndef CAUTOMOBILE_H_H #define CAUTOMOBILE_H_H #include <iostream> #include <string> #include "CMoteur.h" using namespace std; class CMoteur; class CAutomobile { private: int Prix; string Couleur; string NumImmatriculation; CMoteur * LeMoteur; public: CAutomobile( ); CAutomobile(int Px, string Coul, string Immat, int PD, string NS); ~CAutomobile( ); void Avancer( ); void Reculer( ); void Afficher( ); }; #endif
Code:/** * @(#) CMoteur.h */ #ifndef CMOTEUR_H_H #define CMOTEUR_H_H #include <iostream> #include <string> using namespace std; class CMoteur { protected: int PuissanceDynamique; string NumSerie; public: CMoteur( ); CMoteur(int PD, string NS); ~CMoteur( ); bool Demarrer( ); bool Arreter( ); void Afficher( ); }; #endif
FICHIERS .cppCode:/** * @(#) CMoteurEssence.h */ #ifndef CMOTEURESSENCE_H_H #define CMOTEURESSENCE_H_H #include <iostream> #include <string> #include "CMoteur.h" using namespace std; class CMoteurEssence: CMoteur { private: int VolumeReservoir; int NbreSoupape; public: CMoteurEssence( ); CMoteurEssence(int, string, int, int); ~CMoteurEssence( ); void VidangerHuileMoteur( ); void Afficher( ); }; #endif
Code:/** * @(#) CAutomobile.cpp */ #include "CAutomobile.h" #include "CMoteur.h" CAutomobile::CAutomobile( ) { this->LeMoteur = NULL; } CAutomobile::CAutomobile(int Px,string Coul,string Immat, int PD, string NS) { Prix=Px; Couleur=Coul; NumImmatriculation=Immat; LeMoteur=newMoteur(PD,NS); } CAutomobile::~CAutomobile( ) { } void CAutomobile::Avancer( ) { cout<<"L automobile avance"<<endl; LeMoteur.Avancer( ); } void CAutomobile::Reculer( ) { cout<<"L automobile recule"<<endl; LeMoteur.Reculer( ); } void CAutomobile::Afficher( ) { cout<<"Caracteristiques de l automobile :"<<endl; cout<<"Prix : "<<Prix<<endl; cout<<"Couleur : "<<endl; cout<<"Numero d immatriculation :" <<NumImmatriculation<<endl; LeMoteur.Afficher( ); }
Code:/** * @(#) CMoteur.cpp */ #include "CMoteur.h" CMoteur::CMoteur( ) { PuissanceDynamique = 0; NumSerie = "00000000"; } CMoteur::CMoteur(int PD, string NS) { PuissanceDynamique = PD; NumSerie = NS; } ~CMoteur::CMoteur( ) { } boolean CMoteur::Demarrer( ) { cout<<"Le moteur demarre"<<endl; } boolean CMoteur::Arreter( ) { cout<<"Le moteur s arrete"<<endl; } void CMoteur::Afficher( ) { cout<<"Les caracteristiques du moteur sont : "<<endl; cout<<"Puissance dynamique : " PuissanceDynamique<<endl; cout<<"Numero de serie : " NumSerie<<endl; }
Et la question suivante est :Code:/** * @(#) CMoteurEssence.cpp */ #include "CMoteurEssence.h" CMoteurEssence::CmoteurEssence(int VR, int NbS, int PD, string NS):CMoteur(PD,NS) { VolumeReservoir=VR; NbreSoupape=NbS; } CMoteurEssence::CmoteurEssence( ) { } CMoteurEssence::~CmoteurEssence( ) { } void CMoteurEssence::VidangerHuileMoteur( ) { count<<"Vidanger l huile moteur"<<endl; } void CMoteurEssence::Afficher( ) { count<<Les caracteristiques du moteur essence sont :"<<endl; count<<"Volume du reservoir : "<<VolumeReservoir<<endl; count<<"Nombre de soupapes : "<<NbreSoupape<<endl; }
Complétez la fonction principale suivante afin d’afficher les caractéristiques d’un objet MonAuto:
--Prix: 11500
--Couleur: Blanche
--NumImmatriculation: CR-340-AB
--de moteur: MonMoteurà
main()Testez votre programme.
{
CMoteur MonMoteur(110, «31AB47K») ;
CAutomobile MonAuto(…………..) ; // A compléter
……….. // A compléter
}
J'ai écrit :
Code:#include <iostream> #include <string> #include "CAutomobile.h" #include "CMoteur.h" #include "CMoteurEssence.h" using namespace std; int main() { CMoteur MonMoteur(110,"31AB47K"); CAutomobile MonAuto(11500,"Blanche","CR-340-AB",MonMoteur&); MonAuto.Afficher( ); MonMoteur.Afficher( ); return 0; }
Et c'est là que ça coince..... je suis sur une erreur que je ne trouve pas depuis 2 jours !
Code::blocks me donne l'erreur suivante :code blocks.jpg
Si quelqu'un peut m'aider.....je débute (je ne programme que depuis le mois de décembre)
..........
Et quelques pistes pour la question suivante seraient les bienvenues.....
Le monde de l’électrique dans le secteur automobile étant pour l’instant très succinct, j’opte pour une motorisation de type « Essence ».
Un objet NouvelAuto de caractéristiques :
-Prix: 11500
-Couleur: Blanche
-NumImmatriculation: CR-340-AB
Moteur essence: CMoteurEssence *NouveauMoteur ;
PuissanceDynamique: 175
NumSerie: 68FH222S
VolumeReservoir: 60
NbreSoupape: 4
Codez puis testez votre programme nouveau programme afin d’afficher les caractéristiques ci-dessus.
Un grand merci à ceux qui me viendront en aide !
-----