Erreur avec template

Résolu/Fermé
ab5jd Messages postés 8 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 11 décembre 2016 - Modifié par NHenry le 11/12/2016 à 22:40
 ab5jd - 20 déc. 2016 à 23:03
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

#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.

3 réponses

ab5jd Messages postés 8 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 11 décembre 2016
11 déc. 2016 à 22:53
bien noté. merci
0
armasousou Messages postés 1267 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
18 déc. 2016 à 19:49
Les erreurs du compilateur stp ?
Et ton main retourne rien ? o_O
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
20 déc. 2016 à 13:35
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.
0
great! merci
0