Read the question carefully, please.
I was using this base class for my types where I need the Singleton pattern:
#pragma once
template<typename T>
class singleton
{
private:
static T* g_pInstance;
public:
static T* getInstance() { return g_pInstance; }
public:
singleton() { g_pInstance = (T*)this; }
~singleton() { if(g_pInstance == this) g_pInstance = nullptr; }
};
template<typename T>
T* singleton<T>::g_pInstance = nullptr;
Usage (no *cpp file):
class Any : public singleton<Any> { /* Done */ }
However, now I have a strange situation using such class from static library, g_pInstance
pointer is already set to 0xccccccc
(not initialized with zero), before anything was fine.
What is the reason?
UPDATE: compiler: vs 2013 x86