?? singleton.h
字號:
////////////////////////////////////////////////////////////////////////////////
//
// Sphi Middleware
// Copyright (C) 2007, Yuri Ivatchkovitch
// sphi.sourceforge.net
//
////////////////////////////////////////////////////////////////////////////////
#ifndef __SINGLETON_H__
#define __SINGLETON_H__
#pragma warning( disable:4311 )
#pragma warning( disable:4312 )
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T>
class Singleton
{
protected:
static T* ms_Singleton;
public:
Singleton();
virtual ~Singleton();
static T& GetSingleton();
static T* GetSingletonPtr();
};
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T> T* Singleton<T>::ms_Singleton = 0;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T> Singleton<T>::Singleton()
{
if (!ms_Singleton)
{
int offset = (int)(T*)1 - (int)(Singleton <T>*)(T*)1;
ms_Singleton = (T*)((int)this + offset);
}
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T> Singleton<T>::~Singleton()
{
if (ms_Singleton)
{
ms_Singleton=0;
}
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T> T& Singleton<T>::GetSingleton()
{
return (*ms_Singleton);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
template <typename T> T* Singleton<T>::GetSingletonPtr()
{
return (ms_Singleton);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#endif // __SINGLETON_H__
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -