/************************************************************************* 【文件名】 CellAUTOCREATE.h 【功能模块和目的】 流程节点自动创建辅助类头文件 【开发者及日期】 郑石诺 2015/01/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CCellBase; /************************************************************************* 【类名】 CCellAUTOCREATE 【功能】 【接口说明】 流程节点自动创建辅助类 【开发者及日期】 郑石诺 2015/01/24 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CCellAUTOCREATE { private: typedef CCellBase* (*pfnCreateCell)(void); public: CCellAUTOCREATE(const CString& a_Name, pfnCreateCell a_fn); ~CCellAUTOCREATE(void); private: friend class CCellBase; void __setList(void); CCellBase* __createCell(void); static CCellAUTOCREATE* fromName(const CString& a_Name); static CCellBase* createCell(const CString& a_Name); private: static CCellAUTOCREATE* ms_pHead; CCellAUTOCREATE* m_pNext; pfnCreateCell m_pfnCreate; CString m_Name; }; #define DECLARE_CELL_AUTOCREATE \ public: \ static CCellAUTOCREATE ms_dynamicCreate; \ static CCellBase* create(void); \ #define IMPLEMENT_CELL_AUTOCREATE(classname, name) \ CCellAUTOCREATE classname::ms_dynamicCreate(name, create); \ CCellBase* classname::create(void) { return new classname; }