#include <Registrar.h>
A, is a class; B, C are its subclasses
Registrar<A, std::string> reg; reg.registerItem<B>("you"); reg.registerItem<C>("yeah"); A* a1 = reg.createItem("you"); A* a2 = reg.createItem("yeah");
Public Member Functions | |
template<typename Sub> | |
void | registerItem (const IdT &id) |
Register a class by storing a pointer to its constructor. | |
T * | createItem (const IdT &id) |
Create an instance of a registered class. | |
void | dump (std::ostream &stream) |
Print the list of registered classes to stream. | |
Protected Types | |
typedef T *(* | CreatorFunc )() |
Pointer to constructor of class T. | |
Static Protected Member Functions | |
template<typename Sub> | |
static T * | Creator () |
Create a new class of type Sub. | |
Protected Attributes | |
std::map< IdT, CreatorFunc > | mItems |
registered constructors |