您的位置:首页 > 编程语言 > C语言/C++

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)

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: