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:
J'ai cherché un peu du coté de GCC:
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...
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.
Partager