Liste comportant une classe template

Signaler
Messages postés
2
Date d'inscription
samedi 25 octobre 2008
Statut
Membre
Dernière intervention
25 octobre 2008
-
Messages postés
2
Date d'inscription
samedi 25 octobre 2008
Statut
Membre
Dernière intervention
25 octobre 2008
-
Bonjour,


J'aurais voulu savoir s'il est possible de créer une liste contenant une classe template.


Je m'explique :


Voici le code (écourté) du template :

template <class T>
class CompteEnBanque
{
    T *tit;
    std::list<Operation> historique;

    protected:
    double solde;
};

Le T correspond ici au type de compte (Personnel, Entreprise, Joint...)

Or, mon but est de creer une classe Banque qui puisse contenir la liste les comptes que possede la banque. J'ai donc commencer à faire :

class Banque
{
   
    std::string nom;
   
    std::list<Operation> l_ope;
    std::list< CompteEnBanque > l_ceb;
    double liquidites;
   
    public:

    Banque();
    ~Banque();

};

mais cela ne fonctionne pas etant donné que je dois donner un argument au template.
Comment alors rendre cette liste générique ?

Merci d'avance.

2 réponses

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
salut

tu peux tenter de faire un truc comme ca :

abstract class Type_de_compte{
...
};

class Personnel : Type_de_compte{

...

};

class Entreprise : Type_de_compte{

...

};

class Joint : Type_de_compte{

...

};

class CompteEnBanque
{
    Type_de_compte *tit;
    std::list<Operation> historique;

    protected:
    double solde;
};

class Banque
{
   
    std::string nom;
   
    std::list<Operation> l_ope;
    std::list< CompteEnBanque > l_ceb;
    double liquidites;
   
    public:

    Banque();
    ~Banque();

};
Messages postés
2
Date d'inscription
samedi 25 octobre 2008
Statut
Membre
Dernière intervention
25 octobre 2008

Le probleme, c'est que les classes definissant les differents type des comptes sont quand meme pas mal differentes. C'est pour cela que je ne voulais pas passer par une superclasse. Il n'y a pas moyen de faire autrement ?