Erreur avec template
Résolu
ab5jd
Messages postés
8
Statut
Membre
-
ab5jd -
ab5jd -
salut à tous!
on vient de commencer les patrons de fonctions en classes. mais je n'arrive toujours à compiler les codes sur cette partie. exemple avec ce programme
on m'affiche cette erreur dans la zone de notifications:
error: call of overloaded 'min(char&, char&)' is ambiguous|
merci de bien vouloir m'aider
on vient de commencer les patrons de fonctions en classes. mais je n'arrive toujours à compiler les codes sur cette partie. exemple avec ce programme
#include <iostream>
using namespace std ;
#include <string.h> // pour strcmp
template <class T> T min (T a, T b) // patron min
{
if (a < b) return a ;
else return b ;
}
char * min (char * cha, char * chb) // fonction min pour les chaines
{
if (strcmp (cha, chb) < 0) return cha ;
else return chb ;
}
main()
{
int n=12, p=15 ;
char * adr1 = "monsieur", * adr2 = "bonjour" ;
cout << min (n, p) << "\n" ; // patron int min (int, int)
cout << min (adr1, adr2) ; // fonction char * min (char *, char *)
}
on m'affiche cette erreur dans la zone de notifications:
error: call of overloaded 'min(char&, char&)' is ambiguous|
merci de bien vouloir m'aider
| EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Erreur avec template
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
3 réponses
Bonjour,
Le fait que main() soit autorisé par le compilateur plutôt que la syntaxe obligatoire int main() laisse à penser qu'il s'agit d'un compilateur ancien donc potentiellement non compatible.
L'erreur indiquée ne semble pas correspondre au code fourni, il faut plus d'information.
Une problème possible, tu utilises using namespace std; c'est fortement déconseillé en particulier ici, la bibliothèque possède déjà une fonction std::min() et celle ci peut entrer en conflit avec les deux fonctions min() que tu définis.
Le fait que main() soit autorisé par le compilateur plutôt que la syntaxe obligatoire int main() laisse à penser qu'il s'agit d'un compilateur ancien donc potentiellement non compatible.
L'erreur indiquée ne semble pas correspondre au code fourni, il faut plus d'information.
Une problème possible, tu utilises using namespace std; c'est fortement déconseillé en particulier ici, la bibliothèque possède déjà une fonction std::min() et celle ci peut entrer en conflit avec les deux fonctions min() que tu définis.