u_int8_t et unsigned char erreur de couplage

Je suis en utilisant le modèle de la fonction:

template<typename T> void func(const T& value)
{
    obj->func(value);
}

où obj est un objet de la classe:

void my_object::func(int64_t value) { ... }
void my_object::func(uint64_t value) { ... }
void my_object::func(uint32_t value) { ... }
void my_object::func(uint16_t value) { ... }
void my_object::func(uint8_t value) { ... }

Le problème est avec u_int8_t surcharge de my_object::func() remplacer. L'éditeur de liens se plaint externe non résolu symboles à des surcharges, qui devrait ont unsigned char paramètre.

Dois-je remplacer u_int8_t surcharge avec unsigned char surcharge?

Edit: Viens de remarqué que l'éditeur de liens se plaint un uint64_t et int64_t trop.

Je compile sous Windows à l'aide MSVC++ 2008 Express.

Edit: toutes mes Excuses, je déclaré my_object::func(u_int8_t valeur) fonction (et d'autres), mais je n'a pas défini.

D'ailleurs, qu'est-ce que votre compilateur?
MSVC++ 2008 Express
Qu'est-ce que le exact message d'erreur que vous obtenez?
Vous devriez essayer de réduire l'ampleur du problème et de donner plus de détails sur ce que vous êtes en train de faire. Est-ce vraiment à cause de la modèle - ce qui se passe si vous faites un appel direct de l'obj::func() à la place? Comment définissez-vous votre classe, et où et comment vous l'avez mis en œuvre? Avec seulement la description que vous avez fournie, les gens doivent deviner ce qui se passe réellement.
Assurez-vous d'utiliser les mêmes en-têtes et donc typedefs de ces types d'entiers. MSVC a des défauts avec la façon dont il résout des types équivalents. Dans certains cas, deux types de C++ identiques, mais MSVC a interne distinct types pour eux. Ces types interne se rendre à l'éditeur de liens, ainsi qu'une incompatibilité.

OriginalL'auteur mnn | 2011-01-01