非 Const 左辺値参照を右辺値にバインドできません: 解決策
クラス Foo のオブジェクトの初期化中に、指定されたコード スニペットでエラーが発生しましたBar クラスのコンストラクター内。エラー メッセージは、非 const 左辺値参照 (Foo f) が右辺値 (genValue() の呼び出しの結果) にバインドされていることを示しています。
C では、非 const 参照パラメーターは名前付き参照のみを参照できます。変数 (左辺値)。ただし、genValue() の結果は一時的な値 (rvalue) です。この問題を解決するには、genValue() の値を value (int) で渡す必要があります。
<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 で非 Const 左辺値参照を右辺値にバインドできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。