[英]Get list of available data member from a POD struct in C++
这个问题听起来有点不同寻常。 我们来看一个POD结构:
struct MyStruct
{
int myInt;
double myDouble;
AnotherPOD* myPointer;
};
编译器知道可用数据成员的列表。 您是否知道在编译时(更好)或运行时获取数据成员名称列表(和类型)的方法?
我有大量的POD结构,我想自动创建operator <<。
我知道我可以为头文件创建一个解析器,创建一些文件并编译它们。 但是,我确信编译器已经有了这些信息,我想利用它。
有任何想法吗?
谢谢
BOOST_FUSION_ADAPT_STRUCT引入了编译时反射(非常棒)。
你可以将它映射到运行时反射当然,它不会太容易,但它可以在这个方向,而它不会反过来:)
我不知道有什么方法可以直接做你想要的,但你可能想看看clang,这是一个编译器前端实现,你可以利用它来做其他事情:
我想你可以遍历它创建的抽象语法树并获取你所追求的信息。
好吧,标准C ++编译器不能这样做,它们缺乏反射功能。
听起来像是代码生成器的任务。 因此,要么使用工具包从头中提取这些信息,要么从另一个源生成头和序列化函数。 只要确保你不重复自己 。
我担心,但C ++不支持反射。 您可以使用Boost.TypeTraits在编译时实现受限制的反射形式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.