【问题标题】:Set variable value making reference to it by a string [duplicate]设置变量值通过字符串引用它[重复]
【发布时间】:2018-02-14 09:39:17
【问题描述】:

如果标题不是那么具有暗示性,我希望解释可以帮助您理解我的问题。

我有一个设置一些变量值的函数。但是变量名我想以字符串的形式提供,这样:

void setValue( const std:: string& variable_name, int value){ variable_name=value;}

然后当我这样调用这个函数时:

setValue("variable", 10);

我希望执行 set variable=10;

知道这种方法是否可行或我可以有这种行为的其他方式吗? 谢谢!

【问题讨论】:

  • 在 C++ 中,变量在运行时没有名称。如果你想要一些有名字的东西或使用提供反射的库,你可以使用std::map。也可以进行从名称到变量的映射,但没有通用的方法。
  • 是否有可能使用宏和元编程的其他特性来实现这种效果?附言我不问 aobut 它是否有效,或者可以用于某些特定任务。唯一的可能。
  • @A.A 在运行时变量名中提到的变量名不可用。但是,有一种方法可以在编译时使用模板来完成。 template <typename T> void setValue( T& variable_name, T value){ variable_name=value;}

标签: c++


【解决方案1】:

不可能从运行时字符串中神奇地检索变量。您需要提前提供映射,这可能不是您想要的。例如

int& getFromName(const std::string& s)
{
    if(s == "variable") return variable;
    if(s == "foo")      return foo;
    // ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多