Chapitre 2 : Écrire une fonction Template

La chose de base à savoir quand on fait des Templates, c'est qu'il ne faut rien écrire dans un fichier .cpp.

On ne va quand même pas tout écrire dans le .h ?

Bien sûr que non, mais on va remplacer le fichier .cpp par un autre fichier .h où l'on mettra les implémentations des fonctions que l'on définira dans le .h.

En fait on peut faire comme ça :

On écrit le prototype de la fonction dans un fichier fonctionTemplate.h et on l'implémente dans un fichier fonctionTemplate_impl.h.

On est obligé de faire comme ça ?

Bien sûr que non, c'est MA convention, une fois de plus, vous, faites comme vous l'entendez.

Je vous donne la syntaxe :

le fichier fonctionTemplate.h :

1
2
3
4
5
6
7
8
9
10
11
#ifndef __FONCTION_TEMPLATE_H__
#define __FONCTION_TEMPLATE_H__

#include <iostream>

template <class T>
void maFonctionTemplate(const T & typeAbstrait);

#include "fonctionTemplate_impl.h"

#endif

Et le fichier fonctionTemplate_impl.h :

1
2
3
4
5
6
7
8
9
10
11
#ifndef __FONCTION_TEMPLATE_IMPL_H__
#define __FONCTION_TEMPLATE_IMPL_H__

#include "fonctionTemplate.h"

template <class T>
void maFonctionTemplate(const T & typeAbstrait){
	std::cout << typeAbstrait << std::endl;
}

#endif

Encore une fonction qui sert à rien, mais c'est bien pour avoir un aperçu de la syntaxe.

Il faut bien mettre le #define comme dans n'importe quel autre .h pour éviter les inclusions multiples.

Faites attention, le fichier fonctionTemplate_impl.h est un header à part entière, il ne faut donc pas mettre de using namespace dedans.