Bonjour,
J'ai un problème d'instanciation de template, qui me semble ressembler à ce qui est évoqué ici:
http://www.developpez.net/forums/d10...ion-templates/

Pour un "petit" projet, je n'arrive pas à compiler mon code avec GCC, composé pour l'instant d'une petite dizaine de fichiers.
Pour faire court, j'ai deux classes A et B, qui dérivent toutes deux de ROOT<TYPE>.

J'ai donc un magnifique #include "root.hpp" dans mes deux déclarations de classes A et B. Dans ce fichier se trouve évidemment le code de cette classe (enfin, dans un fichier séparé quand même, mais qui est inclus à la fin de root.hpp)
Après compilation correcte du code des 2 classes, le linker râle parce que le code de la classe ROOT est en double:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
obj\src\A.o:A.cpp:(.text+0xfe): multiple definition of `abc::ROOT<int>::operator==(abc::ROOT<int> const&) const'
obj\src\B.o:B.cpp:(.text+0xfe): first defined here
etc...
J'ai cherché un peu du coté de GCC:
http://gcc.gnu.org/onlinedocs/gcc/Te...antiation.html

où l'on me parle de l'option -frepo, mais après essais, ça semble ne rien donner..

Avant de poursuivre dans une mauvaise direction, je sollicite vos avis. Mon architecture est-elle compilable ? Devrais-je faire autrement ? Comment ?

Je précise que j'ai plus l'habitude d'utiliser le polymorphisme classique que les templates, et qu'il y a peut-être quelque chose qui m'a échappé.

Merci pour vos réponses.