“非const引用的无效初始化”是什么意思?

时间:2010-09-15 17:08:01

标签: c++ templates

编译此代码时,我得到以下error

  

在函数'int main()'中:   第11行:错误:“Main&”类型的非const引用的无效初始化来自临时的“主要”

这是我的代码:

template <class T>
struct Main
{
    static Main tempFunction(){
       return Main();
    }
};

int main()
{
   Main<int> &mainReference = Main<int>::tempFunction(); // <- line 11
}

我不明白为什么?谁能解释一下?

1 个答案:

答案 0 :(得分:9)

在C ++中,临时数不能绑定到非常量引用。

Main<int> &mainReference = Main<int>::tempFunction();

在这里,您尝试将rvalue表达式的结果分配给无效的非常量引用mainReference

尝试制作const