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 !
-----