[C++] Templates en cascade

Templates en cascade [C++] - C++ - Programmation

Marsh Posté le 03-10-2005 à 10:23:43    

Bonjour les programmeurs, j'ai un soucis de template avec Visual.
 
C'est un problème de type (une classe en fait) templatisé en cascade.
 
Avec le code suivant :
fichier classes-map.h :

Code :
  1. template <typename Enreg> class Map {
  2. private:
  3.   ListeDoubleChainee<MapModule<Enreg>> Liste;


fichier classes-mapmodule.h :

Code :
  1. template <typename Enreg> class MapModule { ... }


Visual C++ 6.0 me dit :

Citation :

classes-map.h(14) : error C2146: syntax error : missing ',' before identifier 'Liste'


 
Est-ce un problème de Visual ?

Reply

Marsh Posté le 03-10-2005 à 10:23:43   

Reply

Marsh Posté le 03-10-2005 à 10:26:48    

non, pas la
">>" est un token a part entiere qui fausse l'analyse de ton code par le compilo, remplace le par "> >"

Reply

Marsh Posté le 03-10-2005 à 10:38:33    

chrisbk > Merci, c'était exactement ça :)

Reply

Marsh Posté le 03-10-2005 à 14:27:39    

Stroustrup (le créateur du C++) trouve que ce truc du ">>" ridiculise le langage et a demandé que ce soit accepté. Cependant ça casserait la grammaire actuelle et ça ne changera donc surement pas.
 
Dans le même genre, les virgules des templates mal comprises par le préprocesseur :
 

Code :
  1. #define EQ_SIZE(a, b) (sizeof(a) == sizeof(b))
  2. EQ_SIZE(int, map<int, char> ) --> trois arguments : "int", "map<int" et "char>"

Message cité 1 fois
Message édité par jesus_christ le 03-10-2005 à 14:27:54
Reply

Marsh Posté le 06-10-2005 à 12:44:36    

jesus_christ a écrit :

Stroustrup (le créateur du C++) trouve que ce truc du ">>" ridiculise le langage et a demandé que ce soit accepté. Cependant ça casserait la grammaire actuelle et ça ne changera donc surement pas.
 
Dans le même genre, les virgules des templates mal comprises par le préprocesseur :
 

Code :
  1. #define EQ_SIZE(a, b) (sizeof(a) == sizeof(b))
  2. EQ_SIZE(int, map<int, char> ) --> trois arguments : "int", "map<int" et "char>"



 
j'en fais les frais quotidiennement :(

Reply

Sujets relatifs:

Leave a Replay

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