gpt4 book ai didi

c++ - 在 C++ 中创建一个常量数组

转载 作者:IT老高 更新时间:2023-10-28 12:32:01 31 4
gpt4 key购买 nike

codeblocks 是否有任何理由告诉我我无法创建数组?我只是想这样做:

const unsigned int ARRAY[10] = {0,1,2,3,4,5,6,7,8,9};

它给了我

error: a brace-enclosed initializer is not allowed here before '{' token

我已经更改了初始化程序的其他部分,但错误总是说同样的事情。这似乎没有意义,因为这是我在 c++ 中学到的第一件事。

最佳答案

你说你是在一个类中做的,作为一个私有(private)变量。

回想一下(目前),成员变量可能不会在您声明它们的地方初始化(除了少数异常(exception))。

struct T {
std::string str = "lol";
};

不好。它必须是:

struct T {
std::string str;
T() : str("lol") {}
};

但是,雪上加霜的是,在 C++0x 之前,您不能在 ctor-initializer 中初始化数组!:

struct T {
const unsigned int array[10];
T() : array({0,1,2,3,4,5,6,7,8,9}) {} // not possible :(
};

而且,因为你的数组元素是 const,你也不能依赖赋值:

struct T {
const unsigned int array[10];
T() {
for (int i = 0; i < 10; i++)
array[i] = i; // not possible :(
}
};

然而,正如其他一些贡献者非常正确地指出的那样,如果您不能修改其元素,那么为每个 T 实例创建一个数组拷贝似乎没有什么意义。相反,您可以使用 static 成员。

因此,以下内容最终将以最好的方式解决您的问题:

struct T {
static const unsigned int array[10];
};

const unsigned int T::array[10] = {0,1,2,3,4,5,6,7,8,9};

希望这会有所帮助。

关于c++ - 在 C++ 中创建一个常量数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036453/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com