Pages : 1
#1 Le 07/01/2020, à 18:56
- chris7522
Surcharge fonction C++
Bonjour a toutes et a tous ,
Dabord le code :
#include <iostream>
using namespace std;
int addition(int a , int b);
double addition(double a , double b);
int main()
{
int nombre1=0;
int nombre2=0;
cout << "Entrez le 1 er nombre pour l'addition :" << endl;
cin >>nombre1; cin.ignore();
cout << "Entrez le 2eme nombre pour l'addition :" << endl;
cin >>nombre2; cin.ignore();
cout << addition(nombre1,nombre2)<< endl;
return 0;
}
int addition(int a , int b)
{
return a+b;
}
double addition(double a , double b)
{
return a+b;
}
Lorsque je renseigne mes 2 entiers , le resultat est correct . Lorsque je rentre un 1er double par exemple : 2.4 , pas possible de rentrer le 2 eme , il me fait l'addition de 2+4 . Qu'aurai je du faire ?
Merci de votre aide .
Hors ligne
#2 Le 07/01/2020, à 19:10
- NicoApi73
Re : Surcharge fonction C++
Bonjour,
nombre1 et nombre2 sont déclarés comme des entiers dans la fonction main. Donc quand tu tapes 2.4, le premier cin cherche un entier et trouve 2, ignore le . et le second cin capture le 4...
Hors ligne
#3 Le 07/01/2020, à 19:53
- chris7522
Re : Surcharge fonction C++
Merci de ta reponse . Si je met auto , ca change quelque chose ?
Hors ligne
#4 Le 07/01/2020, à 20:55
- NicoApi73
Re : Surcharge fonction C++
non, auto n'est pas un type universel
Hors ligne
#5 Le 07/01/2020, à 21:44
- chris7522
Re : Surcharge fonction C++
ok . Donc pas de surchage de fonction possible dans ce cas ?:)
Hors ligne
#6 Le 08/01/2020, à 06:55
- NicoApi73
Re : Surcharge fonction C++
Ce n'est pas la surcharge qui est en cause dans ce cas, mais la saisie des informations
Hors ligne
#7 Le 09/01/2020, à 17:44
- chris7522
Re : Surcharge fonction C++
Je te remercie
Hors ligne
#8 Le 09/01/2020, à 17:47
- lann
Re : Surcharge fonction C++
Il faut faire des template
<Modéré>
Hors ligne
#9 Le 09/01/2020, à 18:00
- Nuliel
Re : Surcharge fonction C++
Les templates c'est pas que pour les fonctions?
Hors ligne
#10 Le 09/01/2020, à 19:02
- NicoApi73
Re : Surcharge fonction C++
Bonjour,
Les templates vont permettre d'éviter d'écrire 2 fois la fonction. Là le problème c'est que cin >> nombre1; ça capture un int puisque nombre1 est déclaré comme ça.
Les templates existent aussi pour les classes.
Pour moi, dans l'exemple ci-dessus, il faut déterminer à la saisie si c'est un int ou un double, puis appeler la fonction addition (soit surchargée, soit décrite sous forme de template)
Hors ligne
Pages : 1