Bonsoir,
J'ai le problème suivant. Je veux faire une classe template avec un iterateur globale :
J'instancie cette classe Template avec une classe dérivée concrète (mettons class Tutu : public Toto<string> par exemple) et j'obtiens le message suivant du compilateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template <class C> class Toto { private: map<int, C *> titi; map<int, C *>::iterator titiIte; };
J'ai résolu le problème en écrivant ceci :... toto.h(32) : warning C4346: 'std::map<int,_Kty*>::iterator' : le nom dépendant n'est pas un type préfixer avec 'typename' pour indiquer un type ... toto.h(75) : voir la référence à l'instanciation du modèle de classe 'Toto<C>' en cours de compilation
...toto.h(32) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'titiIte'
...toto.h(32) : error C2501: 'Toto<C>::titiIte' : Spécificateurs de type ou de classe de stockage manquants
streamer - 2 erreur(s), 1 avertissement(s)
Mais je ne comprends pas bien le mecanisme et je ne suis pas sur que ce soit la solution la plus propre. Pouvez-vous m'expliquer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part map<int, void *>::iterator titiIte;
Merci
Partager