Инициализация массива C++ в вызове функции или вызове конструктора

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

5
задан Community 23 May 2017 в 09:57
поделиться

2 ответа

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

0
ответ дан 14 December 2019 в 19:07
поделиться

Не в текущем стандарте. Это будет возможно в 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 } );
}
5
ответ дан 14 December 2019 в 19:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: