关于一个类似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 中各保留了一份
[解决办法]
不会吧》》应该是其他地方的 问题,光看上面的代码,没问题啊???