Table of Contents

Singleton Template (C++)

An inheritance-based way to make singleton classes in C++

License

Download

Before downloading or using this product, make sure you understand and accept the terms of the license.

After downloading, make sure to follow the how to use instructions below; they're worth reading.

About

The Singleton Template is a C++ template class that allows you to define your own singleton classes as inheriting from a single base class.

This provides a few benefits over other techniques:

The singleton creation method in ::getInstance() is via the "Meyers Singleton" technique, described in the book Effective C++ by Scott Meyers. So essentially, this class is a "Meyers Singleton C++ template class."

How to Use

Setup

#include "tSingleton.h"
  1. You inherit from tSingleton<MyClass>, where MyClass is the name of your class
  2. Your constructor's access method is protected
  3. Your destructor is virtual
  4. You have the friend class statement similar to the example below
class MyClass
: public tSingleton<MyClass>
{
protected:
    //Members go here
 
protected:
    MyClass();
public:
    virtual ~MyClass();
 
public:
    //Methods go here
 
    friend class tSingleton<MyClass>;
};

Your MyClass class will now have a ::getInstance() method, which you can use to construct the class or get it's instance at runtime.

Usage

MyClass::getInstance();
MyClass* c = MyClass::getInstance();
 
if (c)
{
    c->doStuff(); // Assuming you have a method called ::doStuff, this is how you'd call it
}
MyClass::getInstance()->doStuff();

That's it! You should be good to go.

Q & A

If you have a question not answered here, please feel free to contact me and ask.

Inheritance?

class MyClass
: public MyBase,
  public tSingleton<MyClass>

Thread Safety?

If you've found this project useful, please donate today! :-)

History

July 5, 2016

December 21, 2015

November 15, 2015