码迷,mamicode.com
首页 > 其他好文 > 详细

用统一的一个结构管理动态创建

时间:2017-08-25 19:59:25      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:define   turn   .class   new   源程序   将不   typedef   pre   dynamic   

#define RUN_TIME(classname) (&classname::runtime)
#define DECLARE_DYNAMIC() public: static RUNTIME runtime; virtual char *GetClassName(); virtual char *GetBaseClassName(); static CObject *MyCreate();
#define IMPLEMENT_DYNAMIC(theclass, baseclass)\ RUNTIME theclass::runtime = {#theclass, &baseclass::runtime, theclass::MyCreate}; char *theclass::GetClassName() {   return theclass::runtime.classname; } char *theclass::GetBaseClassName() {   return theclass::runtime.Baseruntime->classname; } CObject * theclass::MyCreate() {   return new theclass; }
typedef
struct _RUNTIME {   char *classname;   struct _RUNTIME *Baseruntime;   CObject *(*pfnCreate)();   CObject *Create(); }RUNTIME; CObject * _RUNTIME::Create() {   return new CObject; }

宏替换:在预编译阶段,对我们源程序文本进行处理。动态创建机制,实际是一种预编译替换机制

编译阶段:我们的源程序将不再发生任何改变。

用统一的一个结构管理动态创建

标签:define   turn   .class   new   源程序   将不   typedef   pre   dynamic   

原文地址:http://www.cnblogs.com/xiaohaige/p/7429396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!