Erreur avec template
Résolu
ab5jd
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
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
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
- Comment recuperer whatsapp supprimé par erreur - Guide
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.