动态创建

来源:互联网 发布:linux中的magic number 编辑:程序博客网 时间:2024/06/02 16:42
#ifndef _DYN_CREATE_H_#define _DYN_CREATE_H_using namespace std;#include "map"#include <string>typedef void* (*FUNC)(void);class DynamicCreateObj{public:static void* CreateObject(const string& objName){map<string,FUNC>::const_iterator It;It = mapClass.find(objName);if (It == mapClass.end()){return 0;}return It->second();}static void AddClass(const string& objName, FUNC fun){mapClass[objName] = fun;}private:static map<string, FUNC> mapClass;};__declspec(selectany) map<string, FUNC> DynamicCreateObj::mapClass;class RegisterClass{public:RegisterClass(const string& objName, FUNC fun){DynamicCreateObj::AddClass(objName,fun);}};#define  REGISTER_CLASS(class_name) \class class_name##Register\{\public:\static void* NewInstance()\{\return new class_name;\}\private:\static RegisterClass reg;\};\RegisterClass class_name##Register::reg(#class_name,class_name##Register::NewInstance);#endif //_DYN_CREATE_H_

0 0
原创粉丝点击