next up previous
Next: Héritage Up: Les templates Previous: Spécification

Templater une classe

Une classe peut aussi être templatée. Par exemple, si l'on souhaite que l'un des champs ait un type générique T plutôt qu'un type précis:

template <class T>
class Vecteur {
  int n;
  T* tableau;
 public:
  Vecteur(const Vecteur<T>& A){}

  // etc.

};

Les différentes classes correspondantes s'appellent Vecteur<int> (pour T = int), Vecteur<double>, Vecteur<bool>, etc. Attention, Vecteur lui-même n'est pas le nom d'une classe. Cette syntaxe explique que le constructeur par copie indiqué dans l'exemple précédent prend comme argument un const Vecteur<T>&.

Ainsi pour déclarer (avec le constructeur vide) un objet A de type Vecteur<T> pour T = int on fait simplement:

Vecteur<int> A;



Guillaume Charpiat 2006-12-07