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 : 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;
    }
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. ^^