Egy egyszerű singleton osztály.
// Singleton.hpp
class Singleton
{
public:
static Singleton * GetInstance();
static void* operator new(size_t);
static void operator delete(void *);
protected:
Singleton() {};
virtual ~Singleton() { instance_ = 0; };
private:
static Singleton * instance_;
};
// ha van delete, legyen new is.
void* Singleton::operator new (size_t size)
{
return ::operator new (size);
}
// Azért, hogy többször ne lehessen megsémisíteni az objektumot.
void Singleton::operator delete(void* memory)
{
if (!memory)
return;
::delete memory;
memory = 0; // Biztos, ami biztos;
}
// Singleton.cpp
Singleton* Singleton::instance_ = 0;
Singleton* Singleton::GetInstance()
{
if (instance_)
return instance_;
instance_ = new Singleton;
return instance_;
}