Bonjour à tous,

J'ai pondu une structure comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
template<int I>
struct GetValue
{
    static const int value;
};
Ensuite à différents endroits, dans des headers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template<> const int GetValue<1>::value = 14;
template<> const int GetValue<2>::value = 6;
template<> const int GetValue<3>::value = 23;
etc.
Le soucis c'est que plusieurs fichiers *.cpp ont besoin de ces spécialisations, et autant sous Windows ça passe correctement, qu'avec g++ le linker râle :

lib.a (obj1.o):(.rodata+0x448): définitions multiples de « GetValue<1>::value »
lib.a (obj2.o):(.rodata+0x43c): défini pour la première fois ici

Et ce pour toutes les valeurs de <I> que j'ai pu spécialiser
Que puis-je faire dans ce cas ?

Merci à vous,

A bientôt