最简单的C++反射
来源:互联网 发布:java中需要标识符 编辑:程序博客网 时间:2024/06/05 17:14
#include <iostream>#include <map>#include <string>using namespace std;typedef void* (*pCreateObject)();class ObjectFactory{public: static void registerCallback(const string& name, pCreateObject); static void* getClassByName(const string& name);private: static map<const string, pCreateObject> m_map;};map<const string,pCreateObject> ObjectFactory::m_map;void ObjectFactory::registerCallback(const string& name, pCreateObject p){ m_map.insert(std::pair<const string, pCreateObject>(name, p));}void* ObjectFactory::getClassByName(const string& name){ map<const string, pCreateObject>::iterator iter = m_map.find(name); if (iter != m_map.end()){ return (*iter->second)(); } else{ return nullptr; }}class Lenovo{public: void show(){ cout << "show" << endl; }private:};#define DEFINERCALLBACK( className ) \ void* create##className(){ \ return (void*)new className; \ } DEFINERCALLBACK(Lenovo);#define REGISTERCALLBACK(className) \ ObjectFactory::registerCallback( \#className, reinterpret_cast<pCreateObject>(create##className))int main(){ REGISTERCALLBACK(Lenovo); Lenovo* p =(Lenovo*) ObjectFactory::getClassByName("Lenovo"); p->show(); delete p; return 0;}
阅读全文
0 0
- 最简单的C++反射
- java反射最简单最本质的一段代码
- c++:最简单的动态分配
- java一个最简单的反射的例子
- 最简单的反射型XSS拿cookie
- 最简单的socket c/s模型
- C#: 最简单的文件读写
- c/c++最简单的加密解密
- C语言最简单的文件操作
- 【C#】最简单的写日志DEMO
- 有史以来最简单的三层实例(C#)
- C/S最简单的socket通信
- 有史以来最简单的三层实例(C#)
- 最简单的c#Remoting编程
- 有史以来最简单的三层实例(C#)
- 一个最简单的Objective C 程序
- 最简单的三层实例(C#)
- 最简单的C内存池
- 16.1 字符集与 HTTP
- 关于全选和全部选及个别操作
- H5-Doctype作用
- jdbc进行简单的增删查改(statement)
- react-native的PanResponder详解研究
- 最简单的C++反射
- Consul 环境搭建(单机)
- ArrayList源码分析(基于Java1.8)
- hadoop3.0高可用HA配置详解
- android studio中导入jar 包之后,怎么配置
- java GUI 实现简单计算器
- 5种关于字符串中“最长”问题的解法
- G
- java锁之wait,notify(wait会释放锁,notify仅仅只是通知,不释放锁)