加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

c++ 完备的运行时类型信息(动态类型信息)

发布时间:2020-12-30 23:41:56 所属栏目:创业 来源:网络整理
导读:众所周知,码猿写代码,天然要求严谨周密,殊不知想象力也很重要。本座阅码几十年,极端感概许多码猿的脑洞被大大扣留,鲜有人能越雷池一步,出格是c++的同窗,连同委员会的那一坨老头子,都很让人无语至极,出自这些人的作品,都是一个死鱼眼睛样子,千人一

也许可以有简捷的方法,好比不必要引入TypeInfoImp,可是现实最终证明TypeInfoImp的方法最具机动性也最能节减代码。最最少,它在自界说的struct可能class就很利便,只要改struct内部包括一个GetTypeInfo()的函数,它就可以被纳入TypeOf系统中,很是利便。对付模板范例的TypeInfoImp,就要用到哈希表了。好比,对付std::paira的范例信息,如下实现,

template<typename FstTy,typename SndTy>
struct TypeInfoImp < std::pair<FstTy,SndTy> >
{
static const bool value = true;
typedef TypeInfoImp < std::pair<FstTy,SndTy> > type;
static TypeInfo* GetTypeInfo()
{
ParamsTypeInfo<FstTy,SndTy> args;
return PodPair::LookupTemplateTypeInfo(args);
}
};

提取其范例参数的const TypeInfo*,天生数组。用此数组到PodPair的哈希表内里查找,假如哈希表中以有此范例数组参数的工具就返回,不然见建设一个添加一条哈希条目,然后返回。每一个泛型范例,好比vector,list,pair都有一个属于本身的哈希表。
打完收工。道理很简朴,可是对付家产级的反射库,要思量许多细节,好比,TypeInfo工具的内存打点;怎么为enum范例天生一堆字符串,以支持字符串和enume值的相互转换;天生并生涯class的结构函数和析构函数指针;定名空间的支持;仿真C#内里的attribute;怎样故最利便的方法天生成员字段可能成员函数信息等等,一句话,就是他妈的体力活。可是,回报是很丰厚的,这里的夫役活做完之后,措施的其他处所上,根基上,就没有什么一再相似的代码,统统的体力事变所有就可以压在范例信息这里了。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读