Инициализация массива C ++ в вызове функции или вызове конструктора - PullRequest
5 голосов
/ 20 апреля 2010

Этот вопрос относится к посту здесь . Можно ли инициализировать массив в вызове функции или вызова конструктора? Например, конструктору класса foo требуется массив размером 3, поэтому я хочу вызвать foo ({0, 0, 0}). Я пробовал это, и это не работает. Я хотел бы иметь возможность инициализировать объекты типа foo в списках инициализации конструктора других объектов или инициализировать объекты foo без предварительного создания отдельного массива. Это возможно?

Ответы [ 2 ]

5 голосов
/ 20 апреля 2010

Не соответствует текущему стандарту. Это будет возможно в C ++ 11

В gcc вы можете использовать приведение, чтобы вызвать создание временного, но это не стандарт c ++ (C99):

typedef int array[2];
void foo( array ) {}  // Note: the actual signature is: void foo( int * )
int main() {
   foo( (array){ 1, 2 } );
}
0 голосов
/ 20 апреля 2010

Если это разрешено вашим проектом, вы можете обернуть данные внутри класса и в конструкторе по умолчанию инициализировать с 0 (или любым другим значением по вашему выбору)

...