无法将非常量左值引用绑定到右值:解决方案
给定的代码片段在初始化类 Foo 的对象时遇到错误在 Bar 类的构造函数中。错误消息表明非常量左值引用 (Foo f) 正在绑定到右值(调用 genValue() 的结果)。
在 C 中,非常量引用参数只能引用命名的变量(左值)。然而,genValue() 的结果是一个临时值(右值)。为了解决这个问题,我们需要通过值(int)传递 genValue() 的值。
<code class="cpp">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; } };</code>
通过将构造函数参数更改为 int,我们现在可以在构造函数范围内初始化 Foo 对象,而无需任何错误。
以上是为什么我不能将非常量左值引用绑定到 C 中的右值?的详细内容。更多信息请关注PHP中文网其他相关文章!