1 Introduction

Sous ce nom barbare se trouve un concept très puissant du C++. Comme vous l'avez vu dans les chapitres précédents, les templates servent à générer des fonctions, ou des classes par rapport à un patron (template) qu'on lui donne. L'exemple le plus simple étant le vecteur, ou le paramètre template correspond au type du vecteur (int, double, float, ...), pour les listes c'est la même choses, on renseigne le type que l'on veut stocker dedans.

Voici un petit rappel, si j'écris ceci dans un fichier main.cpp :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template<class T>
class MyList{
	public:
		MyList(){}
		virtual ~MyList(){}
	//et ainsi de suite
	
	T valeur;
};


int main(int argc, char** argv){
	MyList<int> listeInt;
	MyList<double> listeDouble;
	
	return 0;
}

Le compilateur va générer ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class MyList<int>{
	public:
		MyList(){}
		virtual ~MyList(){}
	//et ainsi de suite
	
	int valeur;
};

class MyList<double>{
	public:
		MyList(){}
		virtual ~MyList(){}
	//et ainsi de suite
	
	double valeur;
};


int main(int argc, char** argv){
	MyList<int> listeInt;
	MyList<double> listeDouble;
	
	return 0;
}

Et dans ce cas, c'est le compilateur qui s'est cassé la tête pour générer les classes MyList avec les types qui vont bien, c'est à dire ceux qui sont demander plus tard dans le programme. Dans notre exemple c'est avec int et double.