STL : problème avec un iterateur
Bonsoir,
J'ai le problème suivant. Je veux faire une classe template avec un iterateur globale :
Code:
1 2 3 4 5 6
| template <class C> class Toto
{
private:
map<int, C *> titi;
map<int, C *>::iterator titiIte;
}; |
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 :
Citation:
... 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)
J'ai résolu le problème en écrivant ceci :
Code:
map<int, void *>::iterator titiIte;
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 ?
Merci