Bonjour,
prenons par exemple le code suivant (dum.h):
Je ne comprend pas pourquoi je n'ai pas le droit de déclarer un pointeur sur Dum sans spécifier les paramètres templates:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <typename T> class Dum { //... code };
Me génère l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dum * dum;
En effet, un pointeur est juste une adresse, qui a donc une taille fixe. C'est lorsqu'on fait le new() qu'il va allouer la mémoire et donc avoir besoin des paramètres templates.1>c:\dev\test_template\test_template.cpp(8) : error C2955: 'Dum' : use of class template requires template argument list
En fait, l'idée est de pouvoir faire quelque chose comme:
Enfin bref, ma question est la suivante: Pourquoi n'ai-je pas le droit de déclarer un pointeur sur une classe template sans en spécifier les paramètres templates?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dum * dum; if ( condition ) dum = new Dum<int>(); else dum = new Dum<string>();
Partager