bonjour,

j'ai une classe template de 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;
	}
};
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
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;
};
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
CResourcesManager::Instance().Get("test.dat");
l'erreur du compilateur est simple :
error C2039: 'Get'*: n'est pas membre de 'CSingletonStatic<T>'
qu'est-ce que j'ai fait de travers pour que ça ne fonctionne pas ?

ps: je suis sous vc7