[RESOLU] typedef de classe template

typedef de classe template [RESOLU] - C++ - Programmation

Marsh Posté le 27-10-2010 à 21:34:28    

Salut tout le monde,
 
J'ai une classe Buffer avec 2 paramètres template, le second étant un enum indiquant son usage ( Buffer <typename Data, typename Type> ).
Ca compile parfaitement en renseignant les 2, mais pour m'éviter de renseigner systématiquement le second paramètre j'aimerais faire un typedef tel que:
 

Code :
  1. typedef template <typename Data> Buffer <Data, BUFFER_TYPE_VERTEX> VertexBuffer;


ou encore

Code :
  1. typedef template <typename Data> Buffer <Data, BUFFER_TYPE_INDEX> IndexBuffer;


 
J'ai essayé plusieurs variantes du genre mais je n'arrive pas à faire une déclaration qui compile, quelqu'un peut m'aider svp?


Message édité par akalash47 le 28-10-2010 à 20:47:45
Reply

Marsh Posté le 27-10-2010 à 21:34:28   

Reply

Marsh Posté le 27-10-2010 à 22:22:10    

pas en C++ 98.
Passe par une metafonction annexe:
 

Code :
  1. template<class Data>
  2. struct make_buffer
  3. {
  4.   typedef Buffer<Data,BUFFER_TYPE_INDEX> type;
  5. };

Reply

Marsh Posté le 28-10-2010 à 20:47:01    

Merci, j'ai effectivement trouvé ça sur le site d'IBM ('tention faut pas oublier typename):
 

Code :
  1. 1.template<class Data>
  2. 2.struct make_buffer
  3. 3.{
  4. 4.  typedef typename Buffer<Data,BUFFER_TYPE_INDEX> type;
  5. 5.};

 
 
et ça compile bien...sauf quand on renseigne le paramètre Data avec une structure définie dans une classe elle-même template (warning C4346). J'ai dû sortir cette déclaration de la classe pour y arriver, bizarre.

Reply

Marsh Posté le 29-10-2010 à 08:07:13    

quand je disais annexe, c'ets bien à l'exterieur ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed