Bonjour !
Je viend de découvrir le modèle des singleton car j'en avait besoin pour mon projet. J'ai donc écrit un template classique de singleton, puis une classe censé etre un singleton:
class CFps: CSingleton<CFps>
{
friend class CSingleton<CFps>;
private:
// Méthodes et variables
public:
// Méthodes et variables
};
Pour utiliser le singleton je procède actuellement de la manière suivante:
CSingleton<CFps>::getInstance()->doSomething();
Sa compile et ça fonctionne bien, mais le problème c'est que cette synthaxe n'est pas pratique du tout, et selon la logique du langage je devrait pouvoir écrire:
CFps::getInstance()->doSomething(); // Autorisé car CFps hérite de la méthode statique getInstance ?
Le problème évidement est que ça ne compile pas !
error C2248: 'getInstance' : cannot access public member declared in class 'CSingleton<class CFps>'
e:\documents\projets\projectzero\csingleton.hpp(52) : see declaration of 'getInstance'
Voici donc la déclaration de getInstance, inclue dans le fichier csingleton.hpp qui contient le code écrit dans la déclaration:
static T* getInstance()
{
if(!psingleton)
psingleton = new T;
return psingleton;
}
L'erreur du compilateur me surprend pas mal je doit dire, car jusqu'à preuve du contraire une méthode public doit être accessible !
Merci pour votre aide
neodelphi