简单反射框架构建 C++实现

news/2024/5/19 2:44:05 标签: c++, 设计模式, 反射, 1024程序员节

java自带反射功能,即可以通过类名(字符串)动态生成对应的类实例,c/c++系统并不提供这样的反射功能。

第一步,简洁地说一下反射的实现思路:

  1. 构建一个空基类,所有需要实现反射的应用类必须 public 继承该类;
  2. 构建一个专门用于产生应用类实例的工具类 CreateObjectFactory,此类具体功能包括:提供工厂设计模式的唯一单例,并且实现应用类实例化方法的注册,同时支持据名返回 Object 对象指针;
  3. 构建一个自动注册的工具类 AutoRegister ,此类主要提供函数自动注册;
  4. 提供反射所需的宏定义头文件;
  5. 定义应用类,并把宏定义放置到应用类指定的位置。

第二步,本实现的基本结构

第三步,具体实现细节

//Object.h

#pragma once
class Object
{

};
// CreateObjectFactory.h

#pragma once
#include "Object.h"
#include <map>
#include <string>

typ

http://www.niftyadmin.cn/n/1813716.html

相关文章

Js四则运算

//除法函数&#xff0c;用来得到精确的除法结果//说明&#xff1a;javascript的除法结果会有误差&#xff0c;在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。//调用&#xff1a;accDiv(arg1,arg2)//返回值&#xff1a;arg1除以arg2的精确结果function ac…

.net中linkbutton增加js验证

增加 OnClientClick"DoNothin(); " DoNothin需要有return值 或者 OnClientClick"return DoNothin(); " DoNothin没有renturn值 转载于:https://www.cnblogs.com/y0umer/archive/2012/07/20/3839221.html

为什么 void * 可以做通用指针

首先&#xff0c;说一下 void * 出现之前的解决方案&#xff1a;char * 在 void 类型出来之前充当通用指针的角色&#xff0c;但是 ASCII 指定了 void 关键字&#xff0c;则对于通用指针&#xff0c;void * 代替了 char *&#xff0c;但是仍然可以使用 char * 理解 void * 。 …

as3 Loader与URLLoader的区别和用法

1、 Loader与URLLoader的区别&#xff1a; Loader&#xff1a;类可用于加载 SWF 文件或图像&#xff08;JPG、PNG 或 GIF&#xff09;文件。被加载的显示对象将作为Loader对象的子级添加。 URLLoader&#xff1a;类以文本、二进制数据或 URL 编码变量的形式从 URL 下载数据。在…

16款最受关注的智能手表 苹果iWatch领衔

智能手表逐渐成为科技行业的新宠&#xff0c;而传闻中的苹果iWatch以及已经确认即将推出的三星Galaxy Gear&#xff0c;显然让这股热潮达到了顶峰&#xff0c;也预示着大牌厂商将逐渐进入该领域&#xff0c;推出更多成熟的产品。以下便是16款值得你关注的智能手表&#xff0c;其…

Perl 与 Python 之间的一些异同

之前一直都在使用python在处理事情&#xff0c;自从接触了数据仓库部门之后&#xff0c;开始接触了perl这个“胶水型”语言。下面的文章是在IBM的文档中心看到的一篇文章&#xff0c;里面分析了这两种脚本语言的异同&#xff0c;挺靠谱&#xff0c;放到blog上分享啦。 关于 Per…

基于 Windows API 的 Tcp 通信(Server 端为多线程模式)

1 设计思路简介 1.1 服务端通过 Server 类实现&#xff1a; &#xff08;1&#xff09;通信初始化。包括套接字版本检查、套接字配置&#xff08;套接字创建和地址配置&#xff09;&#xff1b; &#xff08;2&#xff09;绑定套接字 端口监听&#xff1b; &#xff08;3&…

iOS 开发者必知的 75 个工具(译文)

原文地址&#xff1a;http://benscheirman.com/2013/08/the-ios-developers-toolbelt &#xff08;需FQ&#xff09;如果你去到一位熟练的木匠的工作室&#xff0c;你总是能发现他/她有一堆工具来完成不同的任务。软件开发同样如此。你可以从软件开发者如何使用工具中看出他水准…