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)
Et l'erreur se situe à la ligne " MediaHolder<T>::LoaderMap::iterator it; "
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
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; }
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. ^^
Partager