Heritage de Template Singleton : erreur fonction non membre
bonjour,
j'ai une classe template de singleton :
Code:
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:
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:
CResourcesManager::Instance().Get("test.dat");
l'erreur du compilateur est simple :
Citation:
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