Bonjour
Comme vous avez dû le lire dans la FAQ, si on compile le code suivant avec certains compilateurs (DevCpp en tous cas), on a une erreur de l'éditeur de lien.
La solution proposée par (le brillant) Laurent Gomilla, est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 // main.cpp #include <cstdlib> #include <iostream> #include "A.h" using namespace std; int main(int argc, char *argv[]) { float v = 3; int f = 2; double r = A::produit( v, f ); cout << v << " x " << f << " = " << r << endl; system("PAUSE"); return EXIT_SUCCESS; }// main // A.h #if ! defined A_H #define A_H class A { public: template<class V, typename F> static V produit( V , F ); }; #endif // A.cpp #include "A.h" template<class V, typename F> V A::produit( V v, F f) { return v * f; }
1) soit de copier le code de A.cpp à la fin de A.h
2) d'ajouter un include à la fin du .h (#include "A.tcp")
Ces solutions fonctionnent très bien, mais :
- la solution 1) me gène un peu parce tout le code est dans un seul fichier
- la solution 2) me gène aussi parce que je n'ai pas la coloration syntaxique pour le fichier .tcp (j'utilise DevCpp) et mon éditeur ne me permet plus de basculer du fichier .h au .cpp...
Vous auriez des idées pour éviter les inconvénients de la solution 2 ?
Partager