你说你在类中做了一个私有变量。
回想一下(目前),成员变量可能不会在您声明它们的同一个地方初始化(有一些例外)。
struct T {
std::string str = "lol";
};
不行。它一定要是:
struct T {
std::string str;
T() : str("lol") {}
};
但是,添加侮辱伤害,前C 0x你不能初始化数组在ctor初始化器!:
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实例,如果不能修改其元素,则有一个数组副本没有什么意义。相反,您可以使用静态成员。
所以,以下将最终解决你的问题在什么 – 可能是最好的方式:
struct T {
static const unsigned int array[10];
};
const unsigned int T::array[10] = {0,1,2,3,4,5,6,7,8,9};
希望这可以帮助。