Voici la situation:g ++ me donne appel de fonction étrange dans un * prévu * message d'erreur
void funct(unsigned u, double d, float f)
{
u = 12;
}
void funct(double u, int d, void* asd, float f)
{
u = 13;
}
int main()
{
const unsigned u = 123;
double d = 123.123;
float f = 123.123;
funct(u, d, f, 123);
return 0;
}
me donne:
./src/test.cpp:19: error: no matching function for call to 'funct(const unsigned int&, double&, float&, int)'
./src/test.cpp:4: note: candidates are: void funct(unsigned int, double, float)
./src/test.cpp:8: note: void funct(double, int, void*, float)
Il est absolument erreur attendue, car il n'y a pas de fonction appropriée à appeler , OK bien. Mais jetez un oeil à l'erreur du compilateur:
V V V
no matching function for call to 'funct(const unsigned int&, double&, float&, int)
Pourquoi ces &
là? Quand je fais un appel correct - tout va bien, et tous les paramètres, comme prévu, ne sont pas passés en tant que références.
En utilisant Ubuntu 10.04
, et 64bit g++ version 4.4.3
FWIW, [Comeau] (http://www.comeaucomputing.com/tryitout/) dit 'aucune instance de fonction surchargée correspond à "de fonct"(const unsigned int , double, float, int) '. (J'ai découpé beaucoup de texte pour le rendre lisible dans un commentaire.) – sbi