配列サイズの混乱によりエラーが発生する
次のような動的サイズの float 配列を宣言する場合:
<code class="cpp">int size = 100; float x[size][2];</code>
「予期された定数式」エラーが発生する可能性があります。これは、C では配列のサイズが実行時に決定されず、コンパイル時に固定サイズである必要があるために発生します。ここのサイズ変数は有効な配列次元として使用できません。
ベクトルによる解決策
この問題を回避するには、ベクトルの使用を検討してください:
<code class="cpp">std::vector<std::array<float, 2>> x(size);</code>
これにより、配列のベクトルが作成され、各配列には 2 つの浮動小数点数が含まれます。
代替ソリューション
あるいは、new で生のメモリ割り当てを使用するか、独自のメモリ割り当てを作成することもできます。配列型:
<code class="cpp">// With new float (*px)[2] = new float[size][2]; // With custom array type template<typename T, size_t N> struct array { T data[N]; }; array<float, 2> myArray[size];</code>
追加オプション
その他のオプションには、ペアのベクトルの使用や、構文ヘルパーを使用した独自の配列型のローリングが含まれます:
<code class="cpp">// Vector of pairs std::vector<std::pair<float, float>> x(size); // Custom array type template<typename T> struct identity { typedef T type; }; using FloatArray2 = identity<float[2]>::type; FloatArray2 myArray[size];</code>
以上がC で動的サイズの Float 配列を宣言すると「予期される定数式」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。