This section of the archives stores flipcode's complete Developer Toolbox collection, featuring a variety of mini-articles and source code contributions from our readers.

| Singleton Class Submitted by

Here is a singleton class that allows you to have only one instance of an object. Good for multi-threaded environments that require access to shared data and functionality ie Game Window, Network Transport Managers, AI Managers, etc.. The list goes on. Have fun,
Dave

Currently browsing [singleton.zip] (2,177 bytes) - [Singleton.h] - (276 bytes)

    /* Dave Pallot */
    /* 2000 */

    class Singleton
    {
    private:
    	Singleton();
    	virtual ~Singleton();

    public:
    	static Singleton* m_instance;
    	static Singleton* instance();
    	static void destroy();

    public:
    	void func1();
    	int func2();

    private:
    	char* m_buffer;
    };

Currently browsing [singleton.zip] (2,177 bytes) - [Singleton.cpp] - (631 bytes)

    /* Dave Pallot */
    /* 2000 */

    #include "Singleton.h"
    #include <iostream>

    Singleton* Singleton::m_instance = 0;

    Singleton::Singleton()
    {
    	m_buffer = new char[40];
    	::memset(m_buffer, 0, 40);
    }

    Singleton::~Singleton()
    {
    	delete[] m_buffer;
    }

    Singleton* Singleton::instance()
    {
    	if (m_instance == 0)
    	{
    		m_instance = new Singleton();
    	}

    	return m_instance;
    }

    void Singleton::destroy()
    {
    	delete m_instance;
    	m_instance = 0;
    }

    void Singleton::func1()
    {
    	::strcpy(m_buffer, "Func 1 called");;
    }

    int Singleton::func2()
    {
    	std::cout << m_buffer << std::endl;
    	return 0;
    }

Currently browsing [singleton.zip] (2,177 bytes) - [SingletonClass.cpp] - (272 bytes)

    /* Dave Pallot */

    #include "singleton.h"

    int main(int argc, char* argv[])
    {
    	// Create a singleton
    	Singleton::instance();

    	Singleton::instance()->func1();
    	Singleton::instance()->func2();

    	// Kill the singleton
    	Singleton::destroy();

    	return 0;
    }

The zip file viewer built into the Developer Toolbox made use of the zlib library, as well as the zlibdll source additions.

Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.