#upd: 请参阅"#UPDATED_2"首先在下面。
我无法做到。无论我在下面的代码中放置const
关键字,我都无法获得所需的结果:
int arrayOfInts[5] = {1,2,3,4,5};
上面代码的下两个变体给出了一系列的consts:
const int arrayOfInts[5] = {1,2,3,4,5};
int const arrayOfInts[5] = {1,2,3,4,5};
但是我要声明一个 const
数组,其元素和&尺寸无法改变。
此代码中const
关键字的任何其他位置都不能满足编译器。
#UPDATED:抱歉!当然我写了一个关于数组大小的愚蠢。当然它无法改变。所以我需要一个数组,其元素不能改变。我的意思是,没有人可以做类似的事情:
arrayOfInts[4] = 10;
#UPDATED_2:我很抱歉!显然,我过热了。整个我的问题都是愚蠢的!圆锥阵列的元素无法改变! 我被这个事实误导了
std::array<Type1, arrayOfInts[4]> a;
没有编译。出于某种原因,我决定,因为arrayOfInts [4]不是常数,但它并非如此。这是因为运营商&#34; []&#34;不允许在模板参数表达式中使用。 请原谅我你的失去的时间。
答案 0 :(得分:3)
你是否有
int arrayOfInts[5] = {1,2,3,4,5};
或
const int arrayOfInts[5] = {1,2,3,4,5};
您无法更改数组的大小。两种形式的大小都是常数。
在第一个中,您可以更改数组的元素。在第二个中,您无法更改数组的元素。
第二个声明为您提供所需的信息。
答案 1 :(得分:1)
当您说const T x = /* some value */;
或等同于T const x = /* ... */;
时,您创建一个常量,不可变对象x
。不需要任何其他东西来使它变得更加不可变。
那已经完全符合您的情况了。在您的情况下,T = int[5]
。 (是的,数组类型是类型。大小是类型的一部分。)