C++反射的实现
2016-03-24 19:16
381 查看
点我进入原文
C++反射的实现
参考了wxWidgets的相关代码,并进行简化,同时借鉴了网上的相关内容,改进之处在于,只需要继承基本类Object,在类的头文件中定义宏,DECLARE_CLASS(类名),在类的实现文件中定义宏,IMPLEMENT_CLASS(类名),即可,欢迎指正。代码以来的库都是C++标准库,所以不需要额外添加库。
例如:
#include<iostream>
#include<cstring>
#include "DynBase.h"
using namespace std;
class A : public Object
{
DECLARE_CLASS(A)
public :
A(){cout<<hex<<(long)this<<" A constructor!"<<endl;}
~A(){cout<<hex<<(long)this<<" A destructor!"<<endl;}
};
IMPLEMENT_CLASS(A)
class B : public Object
{
DECLARE_CLASS(B)
public :
B(){cout<<hex<<(long)this<<" B constructor!"<<endl;}
~B(){cout<<hex<<(long)this<<" B destructor!"<<endl;}
};
IMPLEMENT_CLASS(B)
int main()
{
Object* p = Object::CreateObject("A");
delete p;
system("pause");
return 0;
}
标签: <无>
代码片段(3)[全屏查看所有代码]
1. [文件] DynBase.cpp ~ 781B 下载(198)
?2. [文件] DynBase.h ~ 1KB 下载(185)
?3. [文件] test.cpp ~ 579B 下载(164)
?相关文章推荐
- C++开源项目列表
- 洛谷 P1579
- 欢迎使用CSDN-markdown编辑器
- 2016蓝桥杯省赛 C语言A组
- C++扬帆远航——15(项目二,太乐了)
- CSP考试 2015年9月第1题 数列分段 C语言实现
- C++文件操作
- C++动态内存分配
- c++作业2
- C++中cin、cin.get、cin.getline用法辨析
- 跨平台C++开源代码的两种常用编译方式
- 跨平台C++开源代码的两种常用编译方式
- C++中弱符号(弱引用)的意义及实例
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- 笔试3 25
- C++类的特性相关题目
- C++primer第七章习题答案
- C++第二次上机实验2-
- 采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
- c primer plus书中的小错误