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 t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Corriger l'erreur 0x80070643 de la mise à jour KB5034441 de Windows 10 - Accueil - Windows
- Erreur upes 1025 - Forum Téléviseurs
- 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.