C 模板構建反射

2021-08-11 04:08:52 字數 1995 閱讀 8726

template

class ccreategeneralpool

~ccreategeneralpool()

}public:

classtype * create()

template

classtype * create(tparams ... params)

void free(classtype * obj)

};//對上面的生成器包一層

template

class cinstancebasicbuild

virtual ~cinstancebasicbuild() {}

virtual void free(classtype * obj)

static std::mapm_instance_class_names;

static std::string& getclassname(classtype * obj)

return class_name;

}static void remove(classtype * obj)}};

template std::mapcinstancebasicbuild::m_instance_class_names;

template

class cinstancebuilder : public cinstancebasicbuild

cinstancebuilder(const std::string class_name)

public:

bassclass * create()

template

bassclass * create(const paramtype& ... params)

void freeobj(classtype * obj)

static cinstancebuilder * cast(cinstancebasicbuild* obj)

void free(bassclass * obj)}};

//具體建立器

template

class cinstancebuildfactory

~cinstancebuildfactory() {}

disablecopy(cinstancebuildfactory)

public:

static cinstancebuildfactory& getinstance()

public:

void setbuilder(const std::string& class_name, cinstancebasicbuild* builder)

cinstancebasicbuild* getbuilder(const std::string& class_name)

//解析物件

template

void delete(t * obj)

}private:

//!真正的生髮物件

std::map* > m_builders;

};template

class cgetinstancebuilder

return pbuilder;

}//得到具體建立器

static cinstancebuilder* getinstancebuilder(const std::string& class_name)

return null;}};

//介面巨集 用巨集1建立的物件 必須用巨集2進行刪除

//獲取物件create器具

#define getinstancebuilder(class, basicclass) \

cgetinstancebuilder::getinstancebuilder(#class)

//釋放物件

#define deleteinstance(basicclass , pinstance) \

cinstancebuildfactory::getinstance().delete(pinstance);

C 如何利用反射構建Sql引數

首先呢,說到這個問題我們要知道泛型的概念,泛型呢你可以把它當成乙個引數,就是呼叫的時候傳入這個型別,接著就是獲取這個型別裡的所有屬性及值。我們先來建立乙個方法名getmysqlparame的方法,當然我這裡是以mysql的為例,有乙個引數,這個引數是我們不知道型別和屬性及值的實體,我們可以用泛型,也...

C 筆記 利用XML檔案構建反射表機制

在設計程式時,無論是介面或是後台 我們通常都想留給使用者乙個較為簡單的介面。而我在參與封裝語音卡開發函式包的時候,發現各種語音卡的底層函式的介面都是各種整形變數標記值,使用起來極為不變。於是就理解了前輩所寫的 中,利用xml構建反射表機制的初衷。下面我就以某一種語音卡所能相容的語音格式為例,將反射表...

C 使用反射特性構建訪問者模式

出自 c 3.0設計模式 兩個結構的物件 class element public element part public element public element element next class elementwithlink element 與反射相關的核心 abstract clas...