C ++ инициализация структуры, содержащей массив - PullRequest
1 голос
/ 17 декабря 2010

У меня есть структура, которая более или менее соответствует этому шаблону:

struct sTruct {
   int count;
   struct {
       int A;
       int B;
       int C;
   } array[];   //count is the size of this array
};

Я хотел бы иметь возможность инициализировать их с помощью следующего синтаксиса:

sTruct gInit1 = { 2, { {1,2,3},{4,5,6} }};

ДействительноСинтаксис инициализации (точнее, его компактность) важнее, чем конкретная структура структуры.У меня нет доступа к стандартным контейнерам (встроенная платформа), но я мог бы при необходимости воспроизвести некоторые их действия.

В окончательном виде я хотел бы инициализировать массив из примерно 300 из них.Контейнеры sTruct сразу, просто чтобы добавить еще один уровень скобок.

1 Ответ

7 голосов
/ 17 декабря 2010

Вы не можете сделать это.Если бы вы дали массиву размер, вы могли бы.Альтернативой может быть:

template < int size >
struct sTruct
{
  struct { int a, int b, int c } array[size];
};
sTruct<2> gInit1 = {{1,2,3},{4,5,6}};

Но, конечно, все ваши sTructs являются разными типами, и поэтому это может быть не то, что вы хотите.Ваша единственная альтернатива будет базироваться на бесплатном хранилище и не даст вам этот синтаксис до тех пор, пока в 0x не появится список инициализации.

...