Académique Documents
Professionnel Documents
Culture Documents
la fonction f est un modèle de fonction qui utilise un tableau de float. La taille du tableau
sera défini plus tard par le "paramètre" N
Jusqu'ici le compilateur connaît la définition d'un modèle de fonction mais aucune fonction
n'est implémentée ( générée ).
Page 1 sur 5
Ecran < 25, 80 > ecranStandard; // création du type Ecran<25,80>
// et création d'une variable de ce type
Ecran < 4, 40 > ecranLCD; // création d'un autre type Ecran<4,40>
// et création d'une variable de ce type
int main()
{
int i, j;
char c, d;
float x, y;
...
i = min<int> ( j, 0 );
// création et appel de la fonction int min( int, int)
c = min<char> ( d, ‘A’ );
// création et appel de la fonction char min( char, char)
x = min<float> ( y, 3.14 );
// création et appel de la fonction float min ( float, float)
return 0;
}
Les arguments du modèle doivent apparaître obligatoirement dans la liste des paramètres
de l'appel de la fonction
Page 2 sur 5
template <class A, class B, class C>
C min ( A a, B b ) // erreur : C n’est pas un paramètre de min ()
{
Cc=a<b ?a:b;
return c;
}
float x, y ;
x = min( x, y ); // le compilateur en déduit x = min <float> ( x, y )
mais
float x, y ;
x = min( y, 3 ); // erreur, pas de modèle pour ... min ( float, int )
Aucune correspondance ne convient, aucune conversion (cast) n’est appliquée et il y a
erreur de compilation
Page 3 sur 5
template<>
char *min( char *a, char *b )
{
return strcmp( a, b ) < 0 ? a : b ;
}
Page 4 sur 5
Liste <int> listeEntier;
Liste <Point> listePoint;
Page 5 sur 5