Bonjour,

J'ai un petit problème de taille avec mes class templates et std::map

Je m'explique :

J'ai les class templates suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template <typename T>
class CResource
{
 // ...
};
 
template <typename T>
class CResourcePtr
{
 // ...
};
 
template <typename T>
class CResourcesManager
{
 std::map< std::string, CResource<T> > m_resources;
 
 CResourcePtr<T> getResource( const std::string& name );
};
La class CResourcesManager sert à être hérité par une autre class, comme
l'exemple si-dessous.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
class CTexturesManager : CResourcesManager<int>
{
 // ...
};


Mon problème, ça trouve dans la class CResourcesManager, ou plus précisément dans l’une de ses fonctions membres qui est celle-ci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
template <typename T>
CResourcePtr<T> CResourcesManager<T>::getResource( const std::string& path )
{
 // Erreur ICI, le compilateur n'est pas contant :(
    std::map< std::string, CResource<T> >::iterator it;
}
J'ai l'impression qu'il n'aime pas CResource<T> dans std::map, car si je le remplace par CResource<int>, il n'y a pas de problème.

Est-ce que c'est normal ?

Merci d'avance.

Bathof