[C++] Classe générique - Template

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.

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.

2 réponses

CQFD
 
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( ); }
0
CQFD
 
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;
}
0