// 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()

        {

        

    }