Erreur avec template

Résolu
ab5jd Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
 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

#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   Statut Membre Dernière intervention  
 
bien noté. merci
0
armasousou Messages postés 1268 Date d'inscription   Statut Membre Dernière intervention   83
 
Les erreurs du compilateur stp ?
Et ton main retourne rien ? o_O
0
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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
ab5jd
 
great! merci
0