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

关于一个类似Singleton的设计的一个有关问题

2012-04-11 
关于一个类似Singleton的设计的一个问题现在有一个模版:templatetypenameTclassTemplatetest{protected:

关于一个类似Singleton的设计的一个问题
现在有一个模版:
template   <typename   T>   class   Templatetest
{
protected:
static   T*   ms_Instance;
public:
Templatetest(   void   )
{ms_Instance   =   static_cast <   T*   > (   this   );}
……
};

然后在一个dll中如此声明一个类:
class   MY_EXPORT_API   mytest   :   public   Templatetest <mytest>

然后在一个程序中调用此类
mytest*   ptest   =   new   mytest;
会出现一个很奇怪的现象:
在运行到ms_Instance   =   static_cast <   T*   > (   this   );的时候ms_Instance会是一个正确的值。但是当运行完mytest*   ptest   =   new   mytest;后,观察ptest的值会发现ptest中的ms_Instance为空

请问:为什么会有这样的现象呢?


[解决办法]
把构造函数里面的 ms_Instance 和 ptest 中的 ms_Instance 地址打出来看是不是同一个地址。
不知道你的 ms_Insance 是在哪里定义的, 看看是不是 dll 和 exe 中各保留了一份
[解决办法]
不会吧》》应该是其他地方的 问题,光看上面的代码,没问题啊???

热点排行