// Definition
class Singleton
{
public:
static Singleton* InitInstance(int x, int y);
void doSomething();
protected:
Singleton(int x, int y);
private:
static int _instanceCount;
static Singleton* m_ptr;
// Unnecessary only used to show parameters passed through constructor
int i;
int j;
};
// Implementation
int Singleton::_instanceCount = 0;
Singleton* Singleton::m_ptr = NULL;
Singleton::Singleton(int x, int y) : i(x), j(y)
{
}
Singleton* Singleton::InitInstance(int x, int y)
{
if(_instanceCount == 0)
{
_instanceCount += 1;
m_ptr = new Singleton(x,y);
return m_ptr;
}
return m_ptr;
}
void Singleton::doSomething()
{
}