Bonjour,
Dans le cours du 23 avril sur les templates, il nous est expliqué qu'on peut faire:
template<int N>
class UneClasse
{
....
};
Mais est-il possible d'utiliser un autre type que "int" ("size_t" par exemple)?
Tu peux passer un type entier en paramètre, donc oui. "int" et "size_t" sont des types entiers.
Bien sûr on peut avoir n'importe quel classe, il faut utiliser cette syntaxe:
template <class MyClass>
class Vector : private std::vector<MyClass> {
// constructor, destructor, methods, ecc..
typedef std::vector<MyClass> Base;
T& at(size_t index) {const T& at(size_t index) const {
return Base::at(index);
}
return Base::at(index);
}
};
C'est seulement un exemple, mais qui permet de comprendre comment un peut generaliser en alternative au polymorphisme (ne pas abuser).
Template signifie que la classe n'existe que quand le template parameter (MyClass) est specifié dans le code, donc il faudrait aussi que toutes le definitions soit dans le .h .