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

sec*_*rve 5 c++ python introspection

C ++中是否存在像python中那样的自省技术?

例如:我想获得有关特定对象的更多信息,而无需遍历头文件或参考cpp参考。

我是在问一个正确的问题,还是在这里错误的方向?

更新:

根据以下答案,此答案与我的问题有关:如何向C ++应用程序添加反射?

Ran*_*aul 5

C++ 有一个内置的 RTTI 系统,尽管它在很大程度上毫无价值。因此,改为使用自定义内省。

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

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

  • @securecurve 是的,这要困难得多,因为语言本身不支持它。 (3认同)

Jam*_*nze 5

Python 和 C++ 是完全不同的语言。通常,一旦完成编译,几乎所有类型信息都会丢失。您所能做的就是询问一个对象是否是特定类(使用typeid),或者它是否是特定类的实例(使用dynamic_cast)。理论上,您还可以使用 获取类型的名称typeid::name(),但实际上,标准不会对返回值强加任何有用的内容,并且某些编译器(例如 g++)不会为您提供任何有用的内容。