|
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.
|