Comment créer fonction générique?

quentinh390
Comment créer fonction générique?

Bonjour a tous,

Je voudrais "simplement" connaitre la façon de créer une fonction générique.

Par exemple si j'ai le les codes suivants:

int min (int a, int b)
{
int Resultat;
if (a < b)
Resultat = a;
else
Resultat = b;
return Resultat;
}

et

float min (float a, float b)
{
float Resultat;
if (a < b)
Resultat = a;
else
Resultat = b;
return Resultat;
}

Je voudrais donc savoir comment créer une seule fonction pour ces deux types de variables.

Merci d'avance

fredericmazue

C'est tout ce qu'il y a de simple. Une fonction générique en C++ c'est une fonction patron, donc on utilise le mot clé template qui veut dire patron. Et au lieu de donner explicitement un type comme int ou float tu donne une lettre (la coutume veut T pour type) selon cette syntaxe:

template<class T> T mon_min (T a, T b)
{
   int Resultat;
   if (a < b)
      Resultat = a;
   else
      Resultat = b;
   return Resultat;
}

maintenant si je peux me permettre, ta variable Result est totalement inutile, et avec l'opérateur ternaire ? on peut raccourcir un peu le code

template<class T> T mon_min_bis (T a, T b)
{
   return a < b ? a : b;
}

Vive C++ :D

Et ça, ça marche avec tout type A CONDITION que le type dispose de l'opérateur <, ce qui est bien sûr le cas des types intégrés comme int ou float. Si tu veux faire le minimum de deux objets, alors la classe correspondante doit avoir un opérateur < défini.

Sinon le compilateur va t'envoyer à la face une floppée de messages d'erreurs parfaitement antipathiques :D

quentinh390

Ok je comprend.. Est ce que ca fonctionnera aussi pour le type char, double ect?

Merci

fredericmazue

oui