2016-12-01 6 views
2

私はこれに対する答えを見つけることができません。私は、配列で使用される整数値はコンパイル時に知っていなければならないことを認識しており、私がここにあるのはその基準を満たすようです。私が使用している場合:2Dグローバル配列エラー - 配列境界は整数定数ではありません

ptsの値がコンパイル時にわかっていても、配列のバウンドエラーが発生します。ただし、私が使用するコードは受け入れられます:

int L = 50;      // number of interior points in x and y 

int pts = L + 2;    // interior points + boundary points 
double u[52][52],    // potential to be found 
    u_new[52][52];    // new potential after each step 

私はここに何か不足していますか?もしそうでなければ、それはptsを受け入れるために何をすることができますか?彼らは時定数をコンパイルされていないので

答えて

3

あなたは

int L = 50; 
int pts = L + 2; 

Lptsを使用する配列の次元として使用することはできません。 constexpr修飾子を使用すると、コンパイル時に計算できることをコンパイラに知らせることができ、配列の次元として使用できます。

constexpr int L = 50; 
constexpr int pts = L + 2; 
+0

ありがとうございます!私はよく知っていたはずです。私はconst intを使用し、それが受け入れられました。 –

+1

@LeighK、C++ 11を使用できる場合は、 'const'より' constexpr'を優先します。 –

関連する問題