【问题标题】:C++ ~ initial value of reference to non-const must be an lvalueC++ ~ 非常量引用的初始值必须是左值
【发布时间】:2017-02-20 11:45:56
【问题描述】:

是的,我检查了其他 stackoverflow 结果: C++ initial value of reference to non-const must be an lvalue

错误:非常量引用的初始值必须是左值

呼叫:

Value& c = getConfigValue("test");

功能:

Value* getConfigValue(const char* name) {
    if (!cleverconfig_loaded) {
        readConfig();
        if (!cleverconfig_loaded) {
            return NULL;
        }
    }
    if (!cleverconfig.HasMember(name)) {
        return NULL;
    }
    return cleverconfig[name];
}

所以即使我将参数“name”设置为常量值后,它仍然给我这个错误,有谁知道为什么?

【问题讨论】:

  • 你的函数getConfigValue返回一个不能分配给引用的指针。
  • 这是什么cleverconfig
  • getConfigValue 正在返回一个 Value* 并且您想要初始化一个 Value&。你的意思是*getConfigValue("test")
  • cleverconfig 是一个“文档”
  • @defube 这当然会在getConfigValue 返回一个空指针时失败。

标签: c++


【解决方案1】:

该函数返回一个指针,您试图将其绑定到一个引用。这行不通。如何修复取决于cleverConfig.operator[] 的返回类型是什么——要么将函数的返回类型从Value* 更改为const Value&,要么return *cleverconfig[name];

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 2022-11-30
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2021-06-15
    相关资源
    最近更新 更多