C 反射機制的簡單實現

2021-09-07 10:14:14 字數 1510 閱讀 3971

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 中,我們可以通過巨集來實現類似反射的...