salut tout les zéros j'ai une question en ce qui concerne la surcharge des fonctions :
question :
quelle fonction va choisir le compilateur parmi ces deux fonctions
cout<< somme(2,2);
dont le prototypes des fonctions est: charsomme(int a ,int b) et intsomme(int a ,int b)
Et bien en vrai, le compilateur ne peut pas faire de surcharge sur le type de retour comme tu le fais . Cela provoque d'ailleurs une erreur :
foo_.cpp: In function 'char somme(int, int)':
foo_.cpp:5: error: new declaration 'char somme(int, int)'
foo_.cpp:4: error: ambiguates old declaration 'int somme(int, int)'
En gros, la déclaration de la surcharge est ambigüe, et le compilateur ne peut donc rien faire . Cela vient de comment est réalisé la décoration des noms en C++, mais ça commence à sortir de mes connaissances plutôt réduites .
alors notre amie mateo21 a dit dans le tutoriel que "Le type de retour n'est donc pas pris en compte pour identifier la fonction" donc c quoi la solution dans le cas ci -dessus et merci
eh bien, il me semble que tu pourrais garder la seule déclaration "int somme(int a, int b)"
Quand tu auras vraiment besoin d'un char en sortie et que tu peux prouver mathématiquement que le résultat de somme(x, y) se trouvera entre -128 et +127 tu pourra convertir explicitement le résultat en char comme suit :
Ici la surcharge n'a pas d'interret parce que tu veux explicitement faire la différence entre une fonction qui renvoie un char et celle qui renvoie un int.
Si jamais tu veux quand même te casser la tête avec la surcharge tu peux faire:
merci beaucoup pour vos réponses ça fait chaud au coeur
surcharge des fonctions
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units