我似乎无法找到答案。我意识到数组中使用的整数值必须在编译时才知道,而我在这里看到的似乎符合这个标准。如果我使用:
int L = 50; // number of interior points in x and y
int pts = L + 2; // interior points + boundary points
double u[pts][pts], // potential to be found
u_new[pts][pts]; // new potential after each step
然后我得到数组绑定错误,即使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?
答案 0 :(得分:3)
使用时
int L = 50;
int pts = L + 2;
L
和pts
不能用作数组的维度,因为它们不是编译时常量。使用constexpr
限定符让编译器知道它们可以在编译时计算,因此可以用作数组的维度。
constexpr int L = 50;
constexpr int pts = L + 2;