使用表示C++中变量名称的字符串访问变量值

Pau*_*way 9 c++ variables

如果标题不清楚,我会尽量澄清我的要求:

想象一下,我有一个名为counter的变量,我知道我可以通过以下方式看到它的当前值:

std::cout << counter << std::endl;
Run Code Online (Sandbox Code Playgroud)

但是,假设我有很多变量,我不知道在运行之前我想要查看哪些变量.

有没有人知道我可以通过使用其名称来获取变量值的方法,例如:

std::cout << valueOf("counter") << std::endl;
Run Code Online (Sandbox Code Playgroud)

我觉得能够做到这一点可能会使调试大型复杂项目变得更容易.

在此先感谢您的时间.


更新:所提供的所有答案都是有效且有用的,但重点是C++中不存在反射(并且在阅读建议的链接之后很明显为什么).

Bjö*_*lex 10

如前所述,您正在寻找C++中的反射.它没有那个,这个答案解释了原因.


Nik*_*kko 5

您可以使用关联容器作为std :: map <std :: string,your_variable_type>将字符串链接到变量,假设它们都是相同的类型.

如果您有不同类型的变量,则存在解决方案,如boost :: variant