8

C++ 中是否有像 python 中的自省技术?

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

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

更新:

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

4

2 回答 2

4

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

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

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

于 2013-05-14T17:43:38.973 回答
4

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

于 2013-05-14T18:18:18.637 回答