Bonjour,
J'ai le code suivant :
Fichier.h
Fichier.cpp
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 #include <iostream> struct A { template < typename Unknown > void eval ( Unknown x ) const; }; template < typename Unknown > void A :: eval ( Unknown x ) const { std::cout << "eval x = " << x () << std::endl; } template <> void A :: eval< int > ( int x ) const { std::cout << "specialisation eval x = " << x << std::endl; }
Lorsque je compile, j'obtiens le message suivant du compilateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include "Fichier.h" int main() { A a; a.eval(2); return 0; }
multiple definition of `void A::eval<int>(int) const'
Cependant si je met l'intégralité de Fichier.h dans Fichier.cpp, le code compile parfaitement et se comporte parfaitement (à savoir appel du membre spécialisé).
Comment faire pour résoudre le problème en gardant les 2 fichiers?
Partager