bonjour,
j'ai une classe template de singleton :
et un resource manager que je déclare en singleton :
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 template <class T> class CSingletonStatic : public boost::noncopyable { protected: // ctor / dtor CSingletonStatic(){} ~CSingletonStatic(){} public: static CSingletonStatic& Instance(void) { static CSingletonStatic instance; return instance; } };
mais je ne peux pas appeler la méthode Get dans le main de la manière 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
20
21
22
23
24
25
26
27 typedef boost::shared_ptr<unsigned char> CResourcePtr; typedef std::map<std::string, CResourcePtr> CMapResources; class CResourcesManager : public CSingletonStatic<CResourcesManager> { friend class CSingletonStatic<CResourcesManager>; private: // ctor / dtor CResourcesManager(void); virtual ~CResourcesManager(void); public: // récupération d'une resource CResourcePtr Get(const std::string& sName); protected: // chargement d'une resource CResourcePtr Load(const std::string& sName); protected: CMapResources m_mapResources; };
l'erreur du compilateur est simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part CResourcesManager::Instance().Get("test.dat");
qu'est-ce que j'ai fait de travers pour que ça ne fonctionne pas ?error C2039: 'Get'*: n'est pas membre de 'CSingletonStatic<T>'
ps: je suis sous vc7
Partager