初衷
最近在写一个SDK,想实现一个管理类,通过传入不同的类名字符串,来实现动态创建不同类。
在Java等一些语音中,实现了一个机制:反射,个人理解可以通过字符串去创建对象,比如:
std::string a = "testBase";
//反射即可以通过字符串变量‘a’,来达到创建类”testBase“的目的
这里折中了一下,不通过传入类名来达到创建类对象,而是通过回调函数的名字来达到创建类的目的。
C++实现
函数指针
typedef void* (*funcp)();
定义一个基类,所有的动态类对象都由基类派生而来,管理类里面只需要保留基类指针即可。
class Base {
public:
virtual void run() {
};
};
具体实现类,通过派生Base得到,重点在于creatProduc