Bonjour,
Je cherche à définir un objet sous la forme d'un template. Je me heurte actuellement à un petit problème de conception. Je souhaite que ce template puisse prendre en paramètre des types primitifs, mais aussi des pointeurs.
Les pointeurs sur les objets sont alloués à l'extérieur du template puis passés en paramètre. La classe template à la responsabilité de détruire ses objets.
Exemple :
La solution que j'ai trouvé (pas encore testé mais je suppose qu'elle fonctionne) est de spécialiser le template Test pour les types pointeurs alloués dynamiquements :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 template<typename T> class Test { private: T data; ... public: Test(const T& data){...}; virtual ~Test(){delete this->data;} // pas cool crash si T est un type primitif. .... };
Existe - t - il une méthode plus élégante et plus simple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 template<typename T> class Test<T*> { private: T* data; ... public: Test(T* data){...}; virtual ~Test(){delete this->data;} .... };
Merci
Partager