[C++] Classe générique - Template
CQFD
-
CQFD -
CQFD -
Bonjour,
je viens de terminer un exercice sur les Templates, et j'aurais besoin d'une vérification de mon code.
Après avoir lu le tutorial sur le site
http://www.derepas.com/csml/cours_systemc.html#SECTION00336000000000000000
je me suis lancé un nouvel exercice, reprenant à peu de choses près les données de l'exercice.
Je possède deux classes, l'une nommée Michelin, l'autre nommée Brigdestone.
Voici leurs définitions.
J'ai conçu une classe générique Voiture afin de monter une voiture avec n'importe quel type de pneu.
Y'a-t-il des erreurs dans le code ci-dessous ?
Et pour l'instanciation des voitures dans le main( ), voici ce que j'obtiens :
Est-ce que tout ceci est correct ? Merci d'avance.
je viens de terminer un exercice sur les Templates, et j'aurais besoin d'une vérification de mon code.
Après avoir lu le tutorial sur le site
http://www.derepas.com/csml/cours_systemc.html#SECTION00336000000000000000
je me suis lancé un nouvel exercice, reprenant à peu de choses près les données de l'exercice.
Je possède deux classes, l'une nommée Michelin, l'autre nommée Brigdestone.
Voici leurs définitions.
class Michelin { private : double PressionDuPneu; static const double BASSE_PRESSION = 2.0; static const double MOYENNE_PRESSION = 2.5; static const double HAUTE_PRESSION = 3.0; public : Michelin( ): PressionDuPneu(0) { } void gonfler_BP( ) { PressionDuPneu = BASSE_PRESSION; } void gonfler_MP( ) { PressionDuPneu = MOYENNE_PRESSION; } void gonfler_HP( ) { PressionDuPneu = HAUTE_PRESSION; } }; class Bridgestone { private : double PressionDuPneu; static const double BASSE_PRESSION = 2.0; static const double MOYENNE_PRESSION = 2.5; static const double HAUTE_PRESSION = 3.0; public : Bridgestone( ): PressionDuPneu(0) { } void gonfler_BP( ) { PressionDuPneu = BASSE_PRESSION; } void gonfler_MP( ) { PressionDuPneu = MOYENNE_PRESSION; } void gonfler_HP( ) { PressionDuPneu = HAUTE_PRESSION; } };
J'ai conçu une classe générique Voiture afin de monter une voiture avec n'importe quel type de pneu.
Y'a-t-il des erreurs dans le code ci-dessous ?
template <class Pneu> class Voiture { public: Voiture( ) { } void gonfler_BP_Pneu(int i) { mesPneus[i].gonfler_BP( ); } void gonfler_MP_Pneu(int i) { mesPneus[i].gonfler_MP( ); } void gonfler_MP_Pneu(int i) { mesPneus[i].gonfler_HP( ); } private: Pneu mesPneus[4]; // conserver les 4 pneus dans un tableau };
Et pour l'instanciation des voitures dans le main( ), voici ce que j'obtiens :
int main( ) { // créer une voiture avec des pneus Michelin Haute Pression Voiture<Michelin> maVoiture( ); maVoiture.gonfler_MP_Pneu(3); // créer une voiture avec des pneus Bridgestone Basse Pression Voiture<Brigestone> monAutreVoiture( ); monAutreVoiture.gonfler_BP_Pneu(3); return 0; }
Est-ce que tout ceci est correct ? Merci d'avance.
A voir également:
- [C++] Classe générique - Template
- Clé générique windows 10 - Guide
- Pilote audio generique - Télécharger - Pilotes & Matériel
- Générique docteur house - Forum Audio
- Générique gossip girl - Forum Musique / Radio / Clip
- Grossiste parfum générique avis - Forum Consommation & Internet
2 réponses
Il y avait une erreur dans le tutorial, et je l'ai recopiée. Du coup, ça ne fonctionnait pas.
Problème : refus de compilation.
Voici les erreurs, ainsi que les corrections apportées :
Voiture<Michelin> maVoiture( );
-> Voiture<Michelin> maVoiture;
Voiture<Bridgestone> monAutreVoiture( );
-> Voiture<Bridgestone> monAutreVoiture;
void gonfler_MP_Pneu(int i) { mesPneus[i].gonfler_HP( ); }
-> void gonfler_HP_Pneu(int i) { mesPneus[i].gonfler_HP( ); }
Problème : refus de compilation.
Voici les erreurs, ainsi que les corrections apportées :
Voiture<Michelin> maVoiture( );
-> Voiture<Michelin> maVoiture;
Voiture<Bridgestone> monAutreVoiture( );
-> Voiture<Bridgestone> monAutreVoiture;
void gonfler_MP_Pneu(int i) { mesPneus[i].gonfler_HP( ); }
-> void gonfler_HP_Pneu(int i) { mesPneus[i].gonfler_HP( ); }
Voici le code final.
template <class Pneu> class Voiture { public: Voiture( ) { } void gonfler_BP_Pneu(int i) { mesPneus[i].gonfler_BP( ); } void gonfler_MP_Pneu(int i) { mesPneus[i].gonfler_MP( ); } void gonfler_HP_Pneu(int i) { mesPneus[i].gonfler_HP( ); } private: Pneu mesPneus[4]; // conserver les 4 pneus dans un tableau };
class Bridgestone { private : double PressionDuPneu; static const double BASSE_PRESSION = 2.0; static const double MOYENNE_PRESSION = 2.5; static const double HAUTE_PRESSION = 3.0; public : Bridgestone( ): PressionDuPneu(0) { } void gonfler_BP( ) { PressionDuPneu = BASSE_PRESSION; } void gonfler_MP( ) { PressionDuPneu = MOYENNE_PRESSION; } void gonfler_HP( ) { PressionDuPneu = HAUTE_PRESSION; } };
class Michelin { private : double PressionDuPneu; static const double BASSE_PRESSION = 2.0; static const double MOYENNE_PRESSION = 2.5; static const double HAUTE_PRESSION = 3.0; public : Michelin( ): PressionDuPneu(0) { } void gonfler_BP( ) { PressionDuPneu = BASSE_PRESSION; } void gonfler_MP( ) { PressionDuPneu = MOYENNE_PRESSION; } void gonfler_HP( ) { PressionDuPneu = HAUTE_PRESSION; } };
int main( ) { // créer une voiture avec des pneus Michelin Haute Pression Voiture<Michelin> maVoiture; maVoiture.gonfler_HP_Pneu(3); // créer une voiture avec des pneus Bridgestone Basse Pression Voiture<Brigestone> monAutreVoiture; monAutreVoiture.gonfler_BP_Pneu(3); return 0; }