Templates

Templates

by Yanni Julien Skawronski -
Number of replies: 2
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)?
In reply to Yanni Julien Skawronski

Re: Templates

by Deleted user -
Tu peux passer un type entier en paramètre, donc oui. "int" et "size_t" sont des types entiers.
In reply to Yanni Julien Skawronski

Re: Templates

by Raffaele Ancarola -

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) {
return Base::at(index);
}
const T& at(size_t index) const {
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 .