Этот вопрос связан с сообщением здесь. Действительно ли возможно инициализировать массив в вызове функции или вызове конструктора? Например, конструктор нечто класса хочет массив размера 3, таким образом, я хочу назвать нечто ({0, 0, 0}). Я попробовал это, и это не работает. Я хотел бы смочь инициализировать объекты нечто типа в списках инициализации конструктора других объектов или инициализировать нечто без первого создания отдельного массива. Действительно ли это возможно?
Если это разрешено вашим дизайном, вы можете рассмотреть возможность упаковки данных внутри класса и инициализации конструктора по умолчанию с 0 (или любым другим значением по вашему выбору)
Не в текущем стандарте. Это будет возможно в 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 } );
}