c++並不支援反射機制,只能自己實現。
如果需要實現字字串到函式到對映,一定要使用到函式指標。
簡單實現反射機制,根據字串來構造相應到類。主要有以下幾點:
(1) 可以使用map儲存字元從到函式指標到對映。
(2) 工廠類提供字串與函式指標到註冊關係。
(3) 工廠模式根據不同到字串構造不同到類物件。
**示例:
class_factory.h
1#ifndef __classfactory_
2#define __classfactory_
34 #include 5 #include
6 #include78//
定義函式指標
9 typedef void* (*create_fun)();
1011
class
classfactory;
1415
//根據類註冊時的名字, 建立類例項, 並返回
16void* getclassbyname(std::string
name)
1920 create_fun fun = it->second;
21if (!fun)
2223
return
fun();
24}
2526
//註冊類名稱與指標函式到對映關係
27void registclass(std::string
name, create_fun fun)
3031
//單例模式
32static classfactory&getinstance()
3637
private
:38 classfactory() {}; //
私有39 std::mapstring, create_fun>my_map;
40};
4142
#endif
test.h
1#ifndef __test_h
2#define __test_h
34 #include 5
6class
test
9 ~test()
10void print()
11};
1213
void*create_test()
1718
#endif
main.cpp
1 #include "test.h
"2 #include "
class_factory.h"3
4int
main()
1415 t->print();
16delete
t;17
return0;
18 }
C 反射機制的簡單實現
c 並不支援反射機制,只能自己實現。如果需要實現字字串到函式到對映,一定要使用到函式指標。簡單實現反射機制,根據字串來構造相應到類。主要有以下幾點 1 可以使用map儲存字元從到函式指標到對映。2 工廠類提供字串與函式指標到註冊關係。3 工廠模式根據不同到字串構造不同到類物件。示例 class fa...
c 實現反射機制
c 中反射機制比較常見,而c 中沒有該機制。使用c 實現反射機制,主要利用了工廠模式程序物件的生產。itest.h 基類test.h 繼承類helper.h 幫助類main.cpp 主函式入口檔案 pragma once include using namespace std class itest...
c so 反射 C 實現反射機制
net下的很多技術都是基於反射機制來實現的,反射讓.net平台下的語言變得得心應手。最簡單的,比如列舉型別,我們我可以很容易的獲得乙個列舉變數的數值以及其名稱字串。可是,在c 中,列舉變數本質上和乙個整形變數沒有區別,我們很難獲取乙個列舉變數的名稱字串。其實在c 中,我們可以通過巨集來實現類似反射的...