单例模式,求解释
template<typename T> class CSingleton
{
static T* m_instance;
public:
CSingleton()
{
int off1=(int)(T*)1;
int off2=(int)(CSingleton<T>*)(T*)1;
int off=off1-off2;
m_instance=(T*)((int)this+off);
}
...
}
开发环境VC,单例模式为啥这样写?
[解决办法]
template<typename T>
class CSingleton
{
static T* m_instance;
public:
CSingleton( T* p )
{
m_instance = p;
}
};
class CChildClass : public CSingleton< CChildClass >
{
public :
CChildClass( ) : CSingleton< CChildClass >( this ) {}
};