首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

单例模式,求解释解决思路

2013-04-02 
单例模式,求解释templatetypename T class CSingleton{static T* m_instancepublic:CSingleton(){int o

单例模式,求解释
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()
{
int off1=(int)(T*)1;
int off2=(int)(CSingleton<T>*)(T*)1;
int off=off1-off2;
m_instance=(T*)(……

自以为是的人才这么写,以为自己对底层很了解,其实这种代码就是垃圾。你不要被误导了。平时看的设计模式那些书上怎么教你的,你还怎么写。《C++设计新思维——泛型编程与设计模式之应用》上也有提到呢~
如果你想搞懂这什么意思,要看《深入探索C++对象模型》,侯捷老师翻译的。
[解决办法]
补充一下11楼的示例:

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 ) {}
};

热点排行