Problèmes de linking avec templates
Hello,
J'ai une foultitude de déclarations de templates, telles que celles-ci :
Code:
1 2 3 4 5 6 7
| ............
template < typename TYP > bool getMayaAttr(const MFnDependencyNode &depFn, const char *aName, AtRGB &value) const;
template < typename TYP > bool getMayaAttr(const MFnDependencyNode &depFn, const char *aName, AtRGBA &value) const;
template < typename TYP > bool getMayaAttr(const MFnDependencyNode &depFn, const char *aName, MColor &value) const;
template < typename TYP > bool getMayaAttr(const MFnDependencyNode &depFn, const char *aName, MVector &value) const;
template < typename TYP > bool getMayaAttr(const MFnDependencyNode &depFn, const char *aName, MPoint &value) const;
............ |
Les définitions des spécialisations suivent dans le code.
Parmi ces spécialisations, une me pose problème (dans le morceau de code plus haut, il s'agit de la troisème, avec MColor).
Pour simplifier les choses, voici sa définition, qui figure plus bas dans le même fichier, parmi les autres définitions de spécialisations :
Code:
1 2 3 4 5
| template <> inline
bool AmNode::getMayaAttr(const MFnDependencyNode &depFn, const char *aName, MColor &value) const
{
return true;
} |
Le problème est que pour cette spécialisation, je reçois une erreur lors du linking :
error LNK2019: symbole externe non résolu "public: bool __thiscall AmNode::getMayaAttr<class MColor>(class MFnDependencyNode const &,char const *,class MColor &)const " (??$getMayaAttr@VMColor@@@AmNode@@QBE_NABVMFnDependencyNode@@PBDAAVMColor@@@Z) référencé dans la fonction "public: int __thiscall AmNode::updateColor(class MFnDependencyNode const &,char const *,char const *,struct s_Node *)const " (?updateColor@AmNode@@QBEHABVMFnDependencyNode@@PBD1PAUs_Node@@@Z)
Les autres spécialisations n'ont pas été faites par moi, mais j'ai fait exactement la même chose (il me semble), et je ne sais pas ce que suis censé faire de plus.
Une idée ?
Merci.
cela résoud effectivement mon problème, mais...
Hmmm... Merci de ton intervention...
En fait, ce n'était pas une kyrielle de spécialisations, mais une ribambelle de surcharges... N'étant pas encore très expérimenté avec les templates, ça ne m'avait pas sauté aux yeux. Et comme les appels que je faisais aux fausses spécialisations les considéraient comme telles (c'est-à-dire que je précisais le type dans l'appel, entre les <>), ça couinait.
Il va maintenant falloir que je détermine l'intérêt de ces templates, car je ne vois pas de spécialisations, mais seulement des surcharges...
Merci, en tout cas !