bonjour à tous, dans le cours de c++ moderne sur Zeste de savoir, la partie sur la programmation modulaire explique qu'il faut déclarer les templates comme ceci:
conteneur_impl.tpp:
conteneur.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 // Implémentation des fonctions templates. template <typename Collection> void afficher(Collection const & iterable) { for (auto const & e : iterable) { std::cout << e << std::endl; } }
et le main.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef CONTENEUR_HPP #define CONTENEUR_HPP #include <iostream> template <typename Collection> void afficher(Collection const & iterable); // A la fin, on rajoute le fichier d'implémentation. #include "conteneur_impl.tpp" #endif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include <iostream> #include <vector> // Le fichier d'implémentation est lui aussi inclut, du coup. #include "conteneur.hpp" int main() { std::vector<int> const tableau { 1, 2, 3, 4 }; afficher(tableau); return 0; }
est-ce que la déclaration du prototype du template dans conteneur.hpp n'est pas inutile?
Partager