项目场景:
在项目代码编译中报错信息如下:
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