C 反射機制

2021-06-22 03:15:40 字數 819 閱讀 5450

參考:

本文的實現基於上述部落格中的**修改而來。

本文實現的反射機制,其實就是根據字串,構造乙個類物件

classinfo是記錄類名與其相應的工廠函式

dynbase是實現反射機制的公共基類,每個繼承它的子類需要在建構函式中傳遞其類名的字串給dynbase的建構函式

templateclass dynbase;

templateclass classinfo

};templateclass dynbase

; static bool register(std::string type);

static dynbase* createobject(std::string type);

static dynbase* createobject();

private:

static std::map*> m_classinfomap;

};

呼叫的時候如下

class cindustry : public dynbase;

cindustry* pcindustry = dynamic_cast(dynbase::createobject("cindustry"));

總結:本文中採用模板的實現方式,與參考文章中的實現方式相比,優點是在使用過程中子類不需要含有其它多餘的成員,只需在建構函式處傳遞類名字串;缺點是會生成比較多的**,有沒有更好的方法呢?如果你看到這裡,請不吝賜教!!

下面幾個網頁也很不錯

C 反射機制

反射的概述 反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 syste...

C 反射機制

反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 system.refl...

C 反射機制

一 反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 system.re...