 /* '03 Main.cpp' */

 /* Nagłówek strumienia wejścia-wyjścia */
#include <iostream>
 /* Nagłówek funkcji assert */
#include <assert.h>

 /* Klasa singleton */
class CSingletonExample
{
private:
 static CSingletonExample * m_Singleton;

public:

 CSingletonExample ();
 virtual ~CSingletonExample ();

 static CSingletonExample * GetSingleton (void);
};

CSingletonExample * CSingletonExample::m_Singleton;


CSingletonExample::CSingletonExample ()
{
 assert (!m_Singleton);

 m_Singleton = this;
}

CSingletonExample::~CSingletonExample ()
{
 assert (m_Singleton);

 m_Singleton = NULL;
}

CSingletonExample * CSingletonExample::GetSingleton ()
{
 assert (m_Singleton);

 return m_Singleton;
}