c++反射機制的實現(完整程式碼,相當靠譜)
雖然這是windows下寫的程式碼,但是比較合理,非人云亦云,很靠譜。我昨天說過實現一個優秀的c++反射機制,一定要和動態連結庫扯上關係(個人認為)。
下面這篇文章,雖然沒有扯上動態連結庫,但是也是相當不錯的了。關於我個人認為的c++反射機制完整優秀版本,以後我再推出分享。
參考了wxWidgets的相關程式碼,並進行簡化,同時借鑑了網上的相關內容,改進之處在於,只需要繼承基本類Object,在類的標頭檔案中定義巨集,DECLARE_CLASS(類名),在類的實現檔案中定義巨集,IMPLEMENT_CLASS(類名),即可,歡迎指正。程式碼以來的庫都是C++標準庫,所以不需要額外新增庫。
例如:
#include<iostream> #include<cstring> #include "DynBase.h"
1. [檔案]DynBase.cpp ~ 781B 下載(66)
01 |
#include
"StdAfx.h" |
02 |
#include
<map> |
03 |
#include
"DynBase.h" |
04 |
05 |
static std::map<
string,ClassInfo*> *classInfoMap = NULL; |
06 |
using namespace std; |
07 |
IMPLEMENT_CLASS(Object) |
08 |
bool Object::Register(ClassInfo*
ci) |
|