繁体   English   中英

从C ++中的POD结构获取可用数据成员的列表

[英]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,这是一个编译器前端实现,你可以利用它来做其他事情:

http://clang.llvm.org

我想你可以遍历它创建的抽象语法树并获取你所追求的信息。

好吧,标准C ++编译器不能这样做,它们缺乏反射功能。

听起来像是代码生成器的任务。 因此,要么使用工具包从头中提取这些信息,要么从另一个源生成头和序列化函数。 只要确保你不重复自己

我担心,但C ++不支持反射。 您可以使用Boost.TypeTraits在编译时实现受限制的反射形式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM