C ++中的(自)思考是否可能?

时间:2018-11-27 04:49:13

标签: c++ reflection

不使用macros or Boost libraries,是否可以在C ++中遍历类的 own 成员?

我知道“反射”在C ++中不可能像在Java,C#和Go(令人心碎)中一样在本机出现,但是我不知道这是否仅适用于查看其他类的属性的类,或者是否也适用自己。

我希望某些班级的人意识到自己的事可能在运行时以某种方式看到其自身的属性;这可能吗?

1 个答案:

答案 0 :(得分:2)

Nonono。 C ++是静态类型的编译语言。它不需要在运行时知道成员的名称,因为在运行时所有访问都是通过地址完成的;这使成员名称变得毫无用处,从而不能证明存在于可执行文件中。您无法访问不存在的内容。

在运行时知道成员名称的唯一方法是包括在编译过程中显式存储名称的代码-即宏。