error: non-const lvalue reference to type cannot bind to a value of unrelated type

项目场景:

在项目代码编译中报错信息如下:

error: non-const lvalue reference to type '...' cannot bind to a value of unrelated type '...'

问题描述:

将项目问题进行简单抽象后等价于以下问题:

这样做编译通过

 int a;
 const double& m = a;

但这样做编译报错

 int a;
 double& m = a;

报错信息如标题


原因分析:

因为临时变量不能被绑定在一个non-const reference上

 double& m = a;

a是一个int变量, 会被隐式转换为double类型变量, 所以这个过程就生成了一个临时变量, non-const reference不能绑定临时变量


解决方案:

避免隐式转换, 或加const

上一篇:Suricata6.0流管理源码注释一:流管理简介


下一篇:2020 中青杯思路+代码