Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2445 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] implémentation d'une classe générique (liste chainée)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] implémentation d'une classe générique (liste chainée)

n°595797
Yonel
Monde de merde !
Posté le 22-12-2003 à 19:52:08  profilanswer
 

Bon voilà je voudrais faire une liste chaînée de type FIFO (oui je sais ça existe déjà et c'est la 1000000000ième fois que quelqu'un se lance là dedans mais je dois la faire moi même :( )
 
Donc je voulais faire quelque chose de générique avec l'aide de la STL (bien que je n'y connaisse pas grand chose)
 
donc dans mon .h j'ai mis ça pour l'instant (pas fini):
 

Code :
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <vector>
  4. template <class Info> class listeFIFO {
  5.     private:
  6.         vector <Info> tab;
  7.         int size;
  8.         int i;
  9.     public:
  10.         void listeFIFO<Info>::ajouterElt(const Info &arg);
  11.         listeFIFO(int taille) {
  12.             size=taille;
  13.             tab=vector <Info>(taille);
  14.             i=0;
  15.         }
  16. };


 
et dans le .CPP:

Code :
  1. template <class Info>
  2. void listeFIFO<Info>::ajouterElt(const Info &arg) {
  3.     if (i>taille) {
  4.        tab[i++]=arg;
  5.     }
  6.     else {
  7.        taille*=2;
  8.        tab[i++]=arg;
  9.     }
  10.     cout<<"Elt ajoute"<<endl;
  11. }


 
mais quand je veux ajouter un élément dans une liste avec un main pas moyen de compiler :(
 
Je mets ça exactement:
 

Code :
  1. listeFIFO<int> a(5); // ça c'est bon
  2. a.ajouterElt(10); // ça ça pose problème


 
Quelqu'un peut m'éclairer? Merci d'avance !

mood
Publicité
Posté le 22-12-2003 à 19:52:08  profilanswer
 

n°595816
jagstang
Pa Capona ಠ_ಠ
Posté le 22-12-2003 à 20:41:12  profilanswer
 

tu demande un const Info &arg, et tu lui passe un int.  
 
c'est quoi le message d'erreur?

n°595819
ACut
Posté le 22-12-2003 à 20:49:39  profilanswer
 

Info étant le paramètre-type du modèle, la fonction instanciée a pour proto:
void listeFIFO<int>::ajouterElt(const int& )
 
Je ne sache pas qu'on puisse passer une constante littérale (10) par référence...

n°595820
Yonel
Monde de merde !
Posté le 22-12-2003 à 20:50:21  profilanswer
 

hum il me mets "instantiated from here"
 
mais en fait justement je veux faire un truc générique, c'est pour ça que j'ai mis un type Info (je voudrais que ça puisse être n'importe quoi, y compris un int)

n°595821
Taz
bisounours-codeur
Posté le 22-12-2003 à 20:54:29  profilanswer
 

ACut a écrit :

Je ne sache pas qu'on puisse passer une constante littérale (10) par référence...

le compilateur fait une copie
 
 
void listeFIFO<Info>::ajouterElt(const Info &arg);  
 
 
ct'as vu ou ce genre de déclaration toi ?

n°595825
ACut
Posté le 22-12-2003 à 21:03:55  profilanswer
 

Taz a écrit :

le compilateur fait une copie


Ah ouais c'est fou ça! Sans aucun avertissement?

n°595840
Taz
bisounours-codeur
Posté le 22-12-2003 à 21:29:21  profilanswer
 

enquoi c'est fou ?

n°595982
ACut
Posté le 23-12-2003 à 11:14:25  profilanswer
 

taz a écrit :

enquoi c'est fou ?


Eh bien, ça m'épate qu'on puisse transmettre une cte littérale à un f(const int& ). C'est vrai que const fait toute la différence, mais bon, un rien m'émeut. D'ailleurs sans le const, je n'obtiens qu'un modeste avertissement en faisant f(10); sur f(int& i){i=20;}
Je m'attendais à des ennuis plus sérieux... On apprend à toute heure!

n°595984
Taz
bisounours-codeur
Posté le 23-12-2003 à 11:16:45  profilanswer
 

ben non, c'est juste que t'écris sur un temporaire


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] implémentation d'une classe générique (liste chainée)

 

Sujets relatifs
implémentation très malheureuse de pointeurs intelligentsclasse graphics
classe template amierécupérer une liste de connexions réseau ?
Existe-t-il une liste de tout les codes erreurs générés par MySQL?liste chainée en c ?
Griser 2 champs d'un formulaire par rapport au choix dans une liste :oHéritage de classe et vector
récupération des données d'une liste en php 
Plus de sujets relatifs à : [C++] implémentation d'une classe générique (liste chainée)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR