Fab*_*ian 16 c++ reflection attributes
大多数成熟的C++项目似乎都有自己的反射和属性系统,即用于定义可以通过字符串访问的属性并且可以自动序列化.我参与的至少很多C++项目似乎重新发明了轮子.
你知道任何支持反射和属性容器的C++ 开源库,特别是:
小智 12
有一个新项目使用完全不同的方法在C++中提供反射:CAMP. https://github.com/tegesoft/camp
CAMP不使用预编译器,类/ properties/functions/...是使用类似于boost.python或luabind的语法手动声明的.当然,人们可以使用像gccxml或open-c ++这样的预编译器来生成这个声明,如果他们愿意的话.
它仅基于纯C++和boost头,并且由于模板元编程的强大功能,它支持任何类型的可绑定实体(例如,继承和奇怪的构造函数不是问题).
它是在MIT许可证(以前的LGPL)下分发的.
Ski*_*izz 11
这是C++遇到Reflection时得到的:

无论你选择什么,它都可能有可怕的宏,难以调试代码或奇怪的构建步骤.我见过一个系统从DevStudio的PDB文件中自动生成序列化代码.
但严重的是,对于小型项目,编写保存/加载功能(或使用流式运算符)会更容易.实际上,这也可能适用于大型项目 - 显而易见的是,如果结构发生变化,您通常需要更改代码.