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
| template <class T> class Singleton
{
public:
static TSingleton & Instance()
{
if(!inst)
inst = new TSingleton;
}
static void destroy()
{
delete inst;
inst = NULL
}
private:
/* empêcher d'invoquer le constructeur et le destructeur en dehors
* des fonctions propres au singleton
*/
Singleton(){}
~Singleton(){}
/* interdire l'affectation et la copie
* En attendant le = delete apporté par C++11, on déclare
* les fonctions sans les définir
*/
Singleton& operator= (Singleon const &); //déclaré, non défini
Singleton(Singleton const &) // déclaré, non défini
Singleton * inst;
};
template< class T>
TSingleton<T> * TSingleton<T>::inst = NULL; |
Partager