(Courriels de diversion: <phrase@regresse-lamentees.com> <civilisa@changerent-projeterent.com> <ramollira@hortensias-rivaliserons.com> <adossera@decaisseras-accueillirent.com> <manufacturions@circonviendrez-temple.com> <chauffee@rêvez-ennuierions.com> <analysions@beurrer-deliera.com> <accomplissions@coupelle-categorie.com> <assureriez@gendarmees-mandats.com> <montrerais@ristourne-chevaucha.com> )


Le 24 Avr, Frank écrit :
> Salut,
> 
> J'ai défini un liste chaînée générique :
> 
> template<class T> class Liste
> {
>         private :
>         struct Cellule
>         {
>                 T valeur;
>                 Cellule * suivant;
>         };
>  Cellule *debut;
> 
>  public :
>         Liste();
>         int longueur () const;
>         T ieme (const int i) const;
>         void inserer (const int i, const T &e);
>         void supprimer (const int i);
>         void afficher()const;
> };
> 
> Maintenant j'aimerais avoir une fonction qui à partir de 2 Listes
> typées repectivement en <int> et <float> en fabrique une 3ème en
> <Monome>
> 
> j'ai essayé un  truc du style :
> 
> void Liste <Monome> :: polynome ( const Liste<float> coef, const
> Liste<int> exp )
> 
> mais ça plait pas trop à g++ ...

  C'est normal. Ta classe Liste<> n'a pas de fonction membre nommée
polynome.

  Tu peux définir une fonction :
Liste <Monome> polynome (const Liste<float> coef, const Liste<int> exp)

  (à ta place, je demanderais plutôt des références en argument).

  Je n'arrive pas à imaginer la représentation que tu te fais des
templates, ni donc pourquoi tu as pu penser que cela devrait
fonctionner. Dis-en plus.

> Autre chose...comment acceder au pointeur sur le début de la liste de
> coef et de float ?

  Comme tu le veux. C'est toi qui codes la classe Liste, non ? (sans
doute ne comprends-je pas vraiment la question).

> Si qqn a de la doc sur les classes génériques....

  C'est un poil compliqué de l'expliquer en détail.

  Mais une première approche, largement suffisante comme base, est de
considérer la classe template comme un modèle qui sera recopié pour
chaque instanciation des types génériques.

  Ce qui signifie que dans ton programme Liste<T> n'existe pas en tant
que classe, mais tu as des classes Liste<int>, Liste<float> ou
Liste<Monome> dont le corps est une copie de celui de Liste<T> en
substituant int, float ou Monome à T.

-- 
Marc Thirion              | Ramonville Saint-Agne, France
Un Travail pour Chacun    : http://www.multimania.com/untravailchacun/
Marc.Thirion@ISOscope.com : http://www.ISOscope.com/Pérennité des logiciels et des systèmes



---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>