Problème de conception avec les templates
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 :
Code:
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.
....
}; |
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:
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;}
....
}; |
Existe - t - il une méthode plus élégante et plus simple ?
Merci