无法将非常量左值引用绑定到右值:解决方案
给定的代码片段在初始化类 Foo 的对象时遇到错误在 Bar 类的构造函数中。错误消息表明非常量左值引用 (Foo f) 正在绑定到右值(调用 genValue() 的结果)。
在 C 中,非常量引用参数只能引用命名的变量(左值)。然而,genValue() 的结果是一个临时值(右值)。为了解决这个问题,我们需要通过 value (int) 传递 genValue() 的值。
class Foo {
public:
Foo(int x) {
this->x = x;
}
private:
int x;
};
class Bar {
public:
Bar(): f(genValue()) {
}
private:
Foo f;
int genValue() {
int x;
// do something ...
x = 1;
return x;
}
};
通过将构造函数参数更改为 int,我们现在可以在构造函数范围内初始化 Foo 对象,而不会出现任何错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3