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

C++ Introspection techniques, similar to python

本文关键字:类似于 python 技术 内省 c++      更新时间:2023-10-16

c++中是否有像python一样的内省技术?

例如:我想获得关于特定对象的更多信息,而不需要通过头文件或参考cpp引用。

我问的是一个合适的问题,还是在这里转移了错误的方向?

更新:

根据下面的答案,这个答案与我的问题有关:如何在c++应用程序中添加反射?

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

c++中的

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

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

Python和c++是完全不同的语言。通常情况下,一旦完成,几乎所有类型信息都会丢失编译。你所能做的就是问一个物体是否一个特定的类(使用typeid),或者如果它是的实例一个特定的类(使用dynamic_cast)。理论上,你可以也得到类型的名称,使用typeid::name(),但在实践中,标准没有强加任何有用的东西返回值,而一些编译器(例如g++)不会给你任何有用的东西。