java自带反射功能,即可以通过类名(字符串)动态生成对应的类实例,c/c++系统并不提供这样的反射功能。
第一步,简洁地说一下反射的实现思路:
- 构建一个空基类,所有需要实现反射的应用类必须 public 继承该类;
- 构建一个专门用于产生应用类实例的工具类 CreateObjectFactory,此类具体功能包括:提供工厂设计模式的唯一单例,并且实现应用类实例化方法的注册,同时支持据名返回 Object 对象指针;
- 构建一个自动注册的工具类 AutoRegister ,此类主要提供函数自动注册;
- 提供反射所需的宏定义头文件;
- 定义应用类,并把宏定义放置到应用类指定的位置。
第二步,本实现的基本结构
第三步,具体实现细节
//Object.h
#pragma once
class Object
{
};
// CreateObjectFactory.h
#pragma once
#include "Object.h"
#include <map>
#include <string>
typ