Problème de typedef avec template
Bonjour,
désolé pour les deux questions le même jours, mais bon ce problème là est un peu plus chiant que l'autre.
Alors voilà, comme d'habitude, je suis l'article de Laurent à propos de la création d'un moteur 3D et là j'ai réalisé le MediaManager.
Là où j'ai un soucis, c'est dans ce code: (j'ai enlevé les parties inutile)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
class Mesh {
};
template <typename T>
struct MediaHolder {
typedef std::map<std::string, boost::shared_ptr<Loader<T> > > LoaderMap;
LoaderMap loaders; //!< Map contenant les loaders.
};
//! Liste des medias supportés.
typedef TYPELIST_1(Mesh) Medias;
class MediaManager : public Hierarchy<Medias, MediaHolder> {
public:
MediaManager();
~MediaManager();
FileName findMedia(const FileName& filename);
private:
std::vector<std::string> searchPath;
};
template <typename T>
Loader<T>* MediaManager::findLoader(const std::string& extension) const {
// Rechercher l'extension dans la liste des extension supportées par le loader.
MediaHolder<T>::LoaderMap::iterator it;
return NULL;
} |
Et l'erreur se situe à la ligne " MediaHolder<T>::LoaderMap::iterator it; "
Il me dit: ; expected before it.
Quelqu'un voit d'où peut venir l'erreur ?
En lisant la FAQ on peut y lire des choses à propos de typename au lieu de typedef, mais même en utilisant ce principe mon problème reste le même.
Il faut savoir aussi, j'ai essayé de mettre:
std::map<std::string, boost::shared_ptr<Loader<T> > >::iterator it;
ça n'a pas marché.
Par contre, si je fais:
std::map<std::string, boost::shared_ptr<Loader<Mesh> > >::iterator it;
là ça marche ...
J'espère que quelqu'un pourra m'aider. :)
Merci d'avance. ^^