现在的位置: 首页 > 综合 > 正文

C++ 反射机制的实现Demo

2019年07月22日 ⁄ 综合 ⁄ 共 568字 ⁄ 字号 评论关闭
  1. 需求:
    1. 根据类名字符串创建该类的实例;
    2. 根据类的属性字符串来设置属性;
  2. 思路:
    1. 根据类名字符串可以创建该类的实例,那么该类一定有创建自己的回调函数;
    2. 那么就可以使用一个Map来记录类名到回调函数的对应关系,类似这种map<string, class_create_function_address>, key为类名字符串,value为回调函数的地址
    3. 根据类的属性字符串来设置属性,那么该类中也有一个Map,记录属性名到设置属性函数的对应关系,类似这种map<string, property_set_function>,key为属性字符串,value为属性设置的函数
    4. 综合2和3,一共需要2种类型的map,第一种classMap用来映射需要反射的类名字符串到类回调函数的对应关系,第二种propertyMap用来映射每个类中属性名字符串到属性设置函数的对应关系
    5. 优化2,可以用工厂方法来管理classMap,并且有一个用来动态创建 反射类的类dynamicClass  (有点拗口)被创建的类通过该动态类dynamicClass的一个静态对象来向类工厂注册对象创建的函数
    6. 优化3,如果一个类中有很多属性,其实除了属性名称不一样之外,属性设置函数内部基本一样,那么我们可以利用宏定义来实现,并且加上继承
  3. 下载demo地址戳【下载地址】,此工程在vs2013下正常运行


抱歉!评论已关闭.