我想做什么:例如,我有这个:
int some_random_name;
string str="some_random_name";
那么我可以仅使用int
字符串访问str
变量吗?
对不起,如果我的问题愚蠢而奇怪;
答案 0 :(得分:4)
不幸的是,您追求的是 reflection 这个概念,而C ++不支持该概念(这使它可以编译出所有变量名)。
一种方法是维护用std::map
键控的std::string
,其中值是指向要访问的变量的指针,或者甚至是值本身。
答案 1 :(得分:3)
我正在尝试创建图灵机模拟器,其中状态具有类似“ 1RQ2”的命令,因此我认为我可以使用“ Q2”部分并将其用于运行Q2状态执行。像q_exe(Q2);
首先要进行的观察是,您不必将数据存储在实际的命名变量中。如果您使用map<string, int>
,整个问题将变得非常简单。
使用这种方法绝对不需要任何类型的指针。
答案 2 :(得分:-2)
您可以使用地图。
int some_random_name = 3;
std::string str="some_random_name";
std::map<std::string, int*> map;
map[str] = &some_random_name;
std::cout << *(map[str]); // print 3
*(map[str]) = 5;
std::cout << *(map[str]); // print 5
some_random_name = 8;
std::cout << *(map[str]); // print 8
您也可以使用宏,例如:
#define REGISTER_VARNAME(var) map[#var] = &var