fonctions template - C++ - Programmation
Marsh Posté le 14-05-2004 à 00:26:46
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.
Marsh Posté le 14-05-2004 à 00:31:33
l'erreur se produit dans le .cpp :
error C2995: 'LireFichier' : template function has already been defined
CDocuments 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
CDocuments 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 ...
Marsh Posté le 14-05-2004 à 00:35:44
relis toi
Marsh Posté le 14-05-2004 à 00:38:31
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.
Marsh Posté le 14-05-2004 à 00:45:53
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 ...
Marsh Posté le 14-05-2004 à 01:07:06
merci pour le "relis toi" skelter, mais tu pourrai pas etre plus precis ?
Marsh Posté le 14-05-2004 à 00:23:30
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 ?
merci d'avance