Closed. This question needs details or clarity。它当前不接受答案。












想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。

5年前关闭。



Improve this question




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之外,还有其他方法可以这样做吗?

最佳答案

没有黑客就无法直接做到这一点。

在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的身份对其进行访问。

关于c++ - const数组初始化,如果其时间过长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30758172/

10-11 22:40
查看更多