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

  FORUM HardWare.fr
  Programmation
  C++

  fonctions template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonctions template

n°725376
boubix
Posté le 14-05-2004 à 00:23:30  profilanswer
 

salut,
 
j'ai besoin d'ecrire des fonctionsqui traitent des types differents, donc template. mais, je voudrais avoir plusieurs fonctions ayant le meme nom, et ca, ca compile pas ... une idee ?
 
 

Code :
  1. #include "commun.h"
  2. // Fonction d'écriture et de lecture dans des fichiers texte à partir de PILEs
  3. // Chaque ligne du fichier correpond à un élément de la PILE passée en paramètre
  4. // Toutes les fonctions sont templatées !
  5. // Implémentée pour :
  6. //
  7. //      * PILEs "simples" :
  8. //          - PILE <T>
  9. //      * Points (2D et 3D) :
  10. //          - PILE < TPoint2D <T> >
  11. //          - PILE < TPoint3D <T> >
  12. //      * Segments (2D et 3D) :
  13. //          - PILE < Seg2D >
  14. //          - PILE < Seg3D >
  15. /*------------------------------------------------------------------------------------
  16.                                 PILEs "simples"
  17. ------------------------------------------------------------------------------------*/
  18. // Lecture :
  19. template <class T> TChaine LireFichier(PILE <T> pile , TChaine Nomfichier = "" );
  20. // Ecriture :
  21. template <class T> TChaine EcrireFichier(const PILE <T> & pile , TChaine Nomfichier = "" );
  22. /*------------------------------------------------------------------------------------
  23.                                 PILEs de Points (2D et 3D)
  24. ------------------------------------------------------------------------------------*/
  25. // Lecture :
  26. template <class T> TChaine LireFichier(PILE < TPoint2D <T> > pile , TChaine Nomfichier);
  27. template <class T> TChaine LireFichier(PILE < TPoint3D <T> > pile , TChaine Nomfichier);
  28. // Ecriture :
  29. template <class T> TChaine EcrireFichier(const PILE < TPoint2D <T> > & pile , TChaine Nomfichier);
  30. template <class T> TChaine EcrireFichier(const PILE < TPoint3D <T> > & pile , TChaine Nomfichier);
  31. /*------------------------------------------------------------------------------------
  32.                                 PILEs de segments (2D et 3D)
  33. ------------------------------------------------------------------------------------*/
  34. // Lecture :
  35. template <class T> TChaine LireFichier(PILE <Seg2D> pile , TChaine Nomfichier);
  36. template <class T> TChaine LireFichier(PILE <Seg3D> pile , TChaine Nomfichier);
  37. // Ecriture :
  38. template <class T> TChaine EcrireFichier(const PILE <Seg2D> & pile , TChaine Nomfichier);
  39. template <class T> TChaine EcrireFichier(const PILE <Seg3D> & pile , TChaine Nomfichier);


 
merci d'avance

mood
Publicité
Posté le 14-05-2004 à 00:23:30  profilanswer
 

n°725378
nraynaud
lol
Posté le 14-05-2004 à 00:26:46  profilanswer
 

file le message d'erreur et la ligne à laquelle elle se produit stp.
 
rentre la tête dans les épaules et ouvre la bouche aussi.


---------------
trainoo.com, c'est fini
n°725381
boubix
Posté le 14-05-2004 à 00:31:33  profilanswer
 

l'erreur se produit dans le .cpp :
 
error C2995: 'LireFichier' : template function has already been defined
        C:/Documents And Settings/Olivier/Bureau/enteteIO.h(24) : see declaration of 'LireFichier'
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(91) : error C2954: template definitions cannot nest
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(108) : error C2995: 'EcrireFichier' : template function has already been defined
        C:/Documents And Settings/Olivier/Bureau/enteteIO.h(26) : see declaration of 'EcrireFichier'
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(134) : error C2954: template definitions cannot nest
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(152) : error C2954: template definitions cannot nest
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(181) : error C2954: template definitions cannot nest
C:\Documents and Settings\Olivier\Bureau\enteteIO.cpp(199) : error C2954: template definitions cannot nest
 
voila ...

n°725384
skelter
Posté le 14-05-2004 à 00:35:44  profilanswer
 


relis toi


Message édité par skelter le 14-05-2004 à 00:38:34
n°725385
nraynaud
lol
Posté le 14-05-2004 à 00:38:31  profilanswer
 

y'a  
template <class T> TChaine LireFichier(PILE <T> pile , TChaine Nomfichier = "" );
 
et  
template <class T> TChaine LireFichier(PILE < TPoint2D <T> > pile , TChaine Nomfichier);  
 
on voit que la première "englobe" aussi la seconde.
Y'a un machin qui s'appelle la spécialisation de templates, mais je sais pas si ça marche pour les fonctions (les règles pour les classes et les fonction sont un poil différentes). Et je me souviens plus comment ça s'écrit (si y'a un truc pour).
 
je te conseille de mettre "typename" à la place de "class"  
 
dans tes template <class T>.
 
Formellement c'est pareil, mais à la lecture ça montre bien que c'est pas forcément une classe qu'on attend mais un type quelconque.


---------------
trainoo.com, c'est fini
n°725387
boubix
Posté le 14-05-2004 à 00:45:53  profilanswer
 

bon, pour les typename, OK, mais ca change pas grand chose. je vais tacher de jeter un oeil sur la specialisation.
 
sinon, j'ai bien penser que definir une fonction template sur des types non instancies etait un peu couillon. cela dit, le compilo fait toujours la gueule ...

n°725407
boubix
Posté le 14-05-2004 à 01:07:06  profilanswer
 

merci pour le "relis toi" skelter, mais tu pourrai pas etre plus precis ?


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

  fonctions template

 

Sujets relatifs
Soucis avec un template...Equivalence fonctions MySQL-Oracle
[PHP] Template IPB[C++/Template] Problème d'organisation des fichiers ?
[Script mirc] Fonctions sockopen, sockwrite ...surcharge de fonctions dans une dll classique, help plz
[VBA] PB avec fonctions Acess[JavaScript] Besoin d'aide par rapport aux fonctions ...
[Php et classes] valeur par default pour des parametres de fonctionsonmouseover/out : assigner plusieurs fonctions
Plus de sujets relatifs à : fonctions template


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