Bonjour,
J'ai 3 fois la même fonction avec des prototypes différents :

HRESULT AddAttributeString(int value, bool right = true, const std::string &sep = "");
HRESULT AddAttributeString(const char *value, bool right = true, const std::string &sep = "");
HRESULT AddAttributeString(double value, bool right = true, bool highPrecision = false, const std::string &sep = "");

J'utilise ces fonctions à plein d'endroits différents et ça marche bien partout sauf lors d'un appel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int i =2;
AddAttributeString(n,false,",");
Lors de la compilation j'ai :
error C2666: 'AddAttributeString' : 2 overloads have similar conversions

J'ai essayé de caster n en int, en long...
Si je modifie son type en unsigned int ça compile mais la fonction appelée pendant l'exécution est celle qui prend un double (alors que le reste des paramètres ne matche pas du tout...)

J'ai temporairement résolu le problème en réécrivant une fonction qui s'appelle différemment mais je ne comprends toujours pas pourquoi l'échec de la compilation.

Si quelqu'un a une idée...