[ create a new paste ] login | about

Link: http://codepad.org/94YfusgC    [ raw code | fork ]

C++, pasted on Mar 5:
#pragma once

#include <map>
using std::map;

#include "BaseClass.h"

template<typename Type> BaseClass* createType() { return new Type; }

class TemplatedFactory
{
private:
        typedef BaseClass* (*ComponentFactoryFuncPtr)();
        typedef map<const char*, ComponentFactoryFuncPtr> map_type;

        map_type m_Map;

public:
        static TemplatedFactory &GetInstance();

        template<typename Type>
        short AddType(const char* typeName);
};

template<typename Type>
short TemplatedFactory::AddType(const char* typeName)
{
        ComponentFactoryFuncPtr function = &createType<Type>;
        m_Map.insert(std::make_pair(typeName, function));

        return 0;
}


Create a new paste based on this one


Comments: