В C ++ 03 вы можете использовать эту инициализацию только при определении массива:
double list[3][3][3] = {{{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}}};
Компилятор предупреждает, что в соответствии с текущим стандартом он не должен принимать ваш код, даже если он можетобработать его, применяя предстоящие стандартные правила, где {...}
называется external-initializer .
В этом конкретном случае, когда массив является членом, и вы хотите инициализироватьдля всех нулей, вы можете просто использовать значение-инициализацию в C ++ 0x:
struct test {
double list[3][3][3];
test() : list()
{}
};
Для членов типов POD (которые представляют собой массив double
),приведенный выше синтаксис (list()
) в списке инициализаторов означает, что элемент должен инициализироваться значением , что фактически означает, что все значения будут установлены в 0