引数として渡された配列に対して範囲ベースの for ループを使用しようとした場合メイン関数以外の関数を使用すると、コンパイル エラーが発生する可能性があります。これは、配列参照がポインタに減衰し、配列のサイズに関する情報が失われるためです。
この問題に対処するには、次の 2 つのアプローチがあります。
次のことが可能です。配列を reference として渡して、サイズ情報を保持します。このアプローチでは、次に示すように関数シグネチャを変更する必要があります。
<code class="cpp">void foo(int (&bar)[3]);</code>
さまざまなサイズの配列を処理できる汎用コードの場合、 を定義できます。任意のサイズの配列参照を受け取るテンプレート関数:
<code class="cpp">template <std::size_t array_size> void foo(int (&bar)[array_size]) { // Range-based for-loop is valid now }</code>
以上が質問の形式を念頭に置き、核心的な問題に焦点を当てた、いくつかのタイトルのオプションを次に示します。 **オプション 1 (直接的かつ問題重視):** * **渡された配列で範囲ベースの For ループが失敗するのはなぜですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。