C ++内省技术,类似于python

时间:2013-05-14 17:41:07

标签: c++ python introspection

C ++中的内省技术是否像python中那样?

例如:我希望获得有关特定对象的更多信息,而无需通过头文件或引用回cpp引用。

我是在问这个问题,还是在这里提出错误的指示?

更新

根据以下答案,此答案与我的问题有关:How can I add reflection to a C++ application?

2 个答案:

答案 0 :(得分:3)

Python和C ++是完全不同的语言。一般, 一旦完成,几乎所有的类型信息都会丢失 编译。关于你所能做的就是问对象是否是 一个特定的类(使用typeid),或者它是一个实例 一个特定的类(使用dynamic_cast)。从理论上讲,你可以 也可以使用typeid::name()获取类型的名称,但是在 实践中,标准没有强加任何有用的东西 返回值,有些编译器(例如g ++)没有给你 什么有用的。

答案 1 :(得分:0)

C ++有一个内置的RTTI系统,虽然它在很大程度上是非常无价值的。因此,使用自定义内省。

C ++中的内省是通过两种主要方法实现的:预处理步骤,您可以在其中扫描cpp文件并创建数据库/生成CPP代码;使用模板。我写了一些关于模板技术的文章here

如果你对使用内省而不是实现它更感兴趣,我建议查找clReflect,或者你可以尝试cpfg