【发布时间】:2017-01-20 03:06:50
【问题描述】:
我想在其源文件中定义一个常量数组作为类的数据成员。
数组有256个元素,它们之间没有关系。
class Foo {
private:
const int myArray[256] = {
0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 3, 0, 0, 1, 3, 0, 0, 0, 0, 1, 2, 0,
0, 0, 2, 2, 1, 0, 3, 2, 0, 2, 0, 0, 0, 0, 0, 0,
0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0,
0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
};
我的问题:
1- 将数组的定义移到源文件中更好吗?
2- 无论如何要在源文件中定义这个数组而不是定义类的头文件?
【问题讨论】:
-
您在哪里看到
static成员隐式不变的情况?该链接上没有任何内容可以说明。并不是说您依赖它,所以我不确定它的相关性。 -
对不起我的错。常量成员是隐式静态的
-
我只是想办法不在头文件中定义这个数组。
-
好的,那你的问题是什么?您想要一种更好的方法来初始化它而无需所有填充?它在 C++ 中不存在,C++ 还没有合并C99 designated initializer syntax。请编辑问题以添加您的实际问题,不要将其运到 cmets 中。
标签: c++