我需要定义一个“ const int Iteration”来定义数组“ a [Iteration]”。迭代是从2个“双变量”派生的。在下面,我无法成功定义[Iteration]。请帮忙。谢谢
double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);
int a[Iteration]={0};
答案 0 :(得分:1)
Range
和Step
并不是常量表达式,因此Iteration
也不是常量表达式。数组绑定必须是常量表达式。
您可以使用constexpr
关键字来确保变量是根据常量表达式初始化的,并且自身可以被编译器识别为常量表达式:>
constexpr double Range=9.4;
constexpr double Step=2.2;
constexpr int Iteration=(int)(Range/Step);
int a[Iteration]={0};
答案 1 :(得分:1)
或者,如果变量不是编译时常量(在constexpr
时应为变量),则需要更改a
的类型:
double Range=9.4;
double Step=2.2;
const int Iteration=(int)(Range/Step);
std::vector<int> a_v(Iteration);
std::unique_ptr<int[]> a_u(new int[Iteration]());
// or simply, but not recommended
int *a_p(new int[Iteration]());
// don't forget to delete[] a_p afterwards