template <class Object>
class CSingleton
{
public:
CSingleton(void) {}
~CSingleton(void) {}
static Object* instance(void);
static Object& instance_reference(void);
static void instance_cleanup(void);
private:
static Object*& __instance(void);
};
//
//
//
template <class Object> Object* CSingleton<Object>::instance(void)
{
Object* _instance = __instance();
return _instance;
}
template <class Object> Object& CSingleton<Object>::instance_reference(void)
{
return *__instance();
}
template <class Object> void CSingleton<Object>::instance_cleanup(void)
{
Object*& _instance = __instance();
if (NULL != _instance)
{
delete _instance;
}
_instance = NULL;
}
template <class Object> Object*& CSingleton<Object>::__instance(void)
{
static Object* _instance = NULL;
if (NULL == _instance)
{
_instance = new Object;
}
return _instance;
}
单例模板
最新推荐文章于 2024-10-05 21:10:28 发布