Template c++
Résolu
Bonjour,
mon probleme est simple est malgré cela j'ai pas trouvé l'erreur:
voila mon code:
et voila l'arreur:
merci pour votre aide
mon probleme est simple est malgré cela j'ai pas trouvé l'erreur:
voila mon code:
#include <cstdlib> #include <iostream> using namespace std; template <class T> T max(T a,T b){ if(a>b) return a; else return b; } int main() { int z=3,r=9; cout<<"Le max est : "<<max(z,r)<<endl; system("PAUSE"); return EXIT_SUCCESS; }
et voila l'arreur:
call of overloaded `max(int&, int&)' is ambiguous T max(T, T) [with T = int] const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int]
merci pour votre aide
A voir également:
- Template c++
- Template sommaire word - Guide
- Capcut template - Télécharger - Montage & Édition
- Modifier template word - Guide
- Organigramme word template - Guide
- Template trombinoscope - Forum MacOS
3 réponses
C'est normal la fonction std::max(int,int) est définie dans la STL. Or avec le using namespace std, le compilateur ne sait pas s'il doit appeler ta fonction template ou celle de la STL. Il faut donc soit virer le using namespace std; soit trouver un autre nom.
De plus ta fonction devrait idéalement manipuler des références pour être plus efficace car la tu perds en efficacité à faire une recopie des paramètres a et b + une pour le return. Si le type T est "grand" c'est autant de temps de perdu.
Bonne chance
De plus ta fonction devrait idéalement manipuler des références pour être plus efficace car la tu perds en efficacité à faire une recopie des paramètres a et b + une pour le return. Si le type T est "grand" c'est autant de temps de perdu.
template <typename T> inline const T & max(const T & a,const T & b){ return a > b ? a : b; }
Bonne chance