C コンストラクターでの「非 Const 左辺値参照をバインドできません」エラーの処理
コンストラクター内でプライベート オブジェクトを初期化しようとすると、次のエラーが発生します「タイプ 'int&' の非 const 左辺値参照をタイプ 'int' の右辺値にバインドできません」というエラーはイライラする可能性があります。このエラーは、左辺値参照 (名前付き変数のエイリアス) が予期されているが、渡された引数が右辺値 (一時値またはリテラル値) である場合に発生します。
指定されたコードでは、Foo クラスが原因でエラーが発生します。コンストラクターは非 const 参照パラメーター (int &x) を受け取ります。これは左辺値を参照する必要があります。ただし、genValue() 関数は関数が戻ると破棄される一時的な int 変数を作成するため、右辺値を返します。
このエラーを解決するには、左辺値参照を右辺値にバインドしないようにする必要があります。以下に考えられる解決策をいくつか示します。
値で渡す
最も簡単な解決策は、genValue() によって返された値を Foo コンストラクターに値で渡すことです。これは、Foo クラスのコンストラクターを Foo(int &x) から Foo(int x) に変更することを意味します。
一時変数を作成する
あるいは、一時変数を作成することもできます。 Bar のコンストラクター内の int 変数に genValue() の結果を代入し、その一時変数への参照を Foo コンストラクターに渡します。このアプローチにより、左辺値を非 const 参照にバインドできるようになります。
スマート ポインターを使用する
スマート ポインターを使用する場合は、次のようにすることができます。 Foo オブジェクトの有効期間を管理するために unique_ptr を作成します。これにより、Foo オブジェクトへのポインタを左辺値であるため、参照によって Foo コンストラクターに渡すことができます。
これらの解決策のいずれかを実装することで、前述のエラーを効果的に処理し、プライベート Foo を正しく初期化できます。 Bar のコンストラクター内のオブジェクト。
以上がC コンストラクターの「非 Const 左辺値参照をバインドできません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。