-1

私は C++ Builder を使用しており、const int 変数をベクトルのサイズに設定する際に助けを求めています。

何が機能するかを示すために、機能する私のコードを次に示します。

vector<appointment> appointmentVector = calCalendar.getAllAppointments();

const int sizeOfArray = 5;
unsigned int arr[sizeOfArray];

コードを次のように変更すると:

vector<appointment> appointmentVector = calCalendar.getAllAppointments();

const int sizeOfArray = appointmentVector.size();
unsigned int arr[sizeOfArray];

次のエラーが表示されます。

[BCC32 エラー] Assessment2.cpp(357): E2313 定数式が必要です

これについて何か助けてもらえますか?

アップデート

次のコードに問題があるため、この質問をしています。

unsigned int arr[2] = {1,8};
unsigned int days;
TMonthCalendar->BoldDays(arr, 1, days);
MonthBoldInfo = days;

BoldDays メソッドには unsigned int 配列が必要ですが、実行時の値しか知りません。この問題の解決策を見つける方法を教えてください。

4

3 に答える 3

0

静的配列にはコンパイル時の定数が必要なため、コンパイル時に配列のサイズがわからないため、2 番目のコードはコンパイルされません。arr をベクトルまたは動的配列として宣言するとよいでしょう。

これは基本的な C++ の質問です。初心者向けの C++ の本を読むことをお勧めします。

于 2012-10-11T04:52:56.923 に答える
0

コードの問題は、定数式から生成された値 (コンパイル時に評価される値) またはリテラルである必要がある const 変数に、非定数式の結果値 (実行時に評価される値) を割り当てていることです。 .

これを解決するには、 in を使用constしないでくださいsizeOfArray:

int sizeOfArray = appointmentVector.size();

また、上記の問題を解決したら、動的に割り当てられた配列を作成する必要があります。

unsigned int* arr = new unsigned int[sizeOfArray];

動的に割り当てられた配列を使用すると、ランタイム値から要素数を取得できる配列を作成できます。

于 2012-10-11T04:55:06.933 に答える
0

定数式は、コンパイラが値を計算できる式です。C++ では、配列のサイズはその型の一部であり、定数式として指定する必要があります。コンパイラが式の値を判断できない場合は、配列型のサイズとして使用できません。できることは、ヒープに「配列」を割り当て、通常配列名を使用するのと同じように、最初の要素へのポインターを使用することです。

于 2012-10-11T04:56:16.663 に答える