C++-非常量引用的初始值必须是左值的处理方法-工作小记 发表于 2021-09-14 更新于 2023-05-16 分类于 Cpp 阅读次数: 阅读次数: Valine: 本文字数: 324 阅读时长 ≈ 1 分钟 引入在进行函数传参时,发现此问题 12345struct node;void fun(node*& node2);node node1;fun(&node1);//error!非常量引用的初始值必须是左值 其中涉及相关概念 左值与右值 右值引用 原因分析因为 fun 的形参是 node*& 而传入的实参为 &node,中间涉及了一个隐式的类型转换: 12node*& tmp = (node*)(&node1);node2 = tmp; 此处&node1为右值,所以会报错 问题解决 避免隐式类型转换 12node* tmp = &node1;fun(tmp);//此时tmp为左值 修改函数形参 1fun(node& node2); 打赏 微信支付 支付宝 本文作者: RobbEr 本文链接: https://robber.ltd/2021/09/14/c-fei-chang-liang-yin-yong-de-chu-shi-zhi-bi-xu-shi-zuo-zhi-de-chu-li-fang-fa-gong-zuo-xiao-ji/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!