In my answer对此question有人提到,如果变量声明为const
,我发布的代码将无效。
如果我想初始化const
类型
int main (){
const int ar[100];
//this is invalid in c++
//something like this
for (int i=0;i <100;++i)
ar[i]=i;
return 0;
}
除了使用该问题中提出的#define
method之外,还有其他方法吗?
答案 0 :(得分:2)
没有黑客可以直接做到这一点。
在C ++中解决这个问题的一种方法是利用它们的构造函数const
对象内部仍然可以修改的事实。因此,您可以将数组包装到类中并在构造函数
struct Arr
{
int a[100];
A()
{
for (unsigned i = 0; i < 100; ++i)
a[i] = i;
}
};
然后宣布
const Arr arr;
当然,现在您必须以arr.a[i]
方式访问它,除非您覆盖Arr
中的运算符。
答案 1 :(得分:1)
您可以使用技巧...初始化常规数组,然后获取对const数组的引用:
int arr[100];
for (int i=0; i<100; i++) arr[i] = i*i;
const int (&carr)[100] = arr;