Сохранение инициализации в фигурных скобках с удаленным конструктором по умолчаниюC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Сохранение инициализации в фигурных скобках с удаленным конструктором по умолчанию

Сообщение Anonymous »

Мне хотелось бы иметь тип агрегатной структуры, который нельзя случайно оставить неинициализированным.
В настоящее время с помощью следующего кода:
< pre class="lang-cpp Prettyprint-override">

Код: Выделить всё

struct Foo {
int a;
int b;
};

Foo foo;
остается неинициализированным. Это можно исправить с помощью Foo foo = {}, который инициализирует его нулевым значением, или Foo foo = {.a = 1, .b = 2}, чтобы явно задать поля.Я хотел бы обеспечить инициализацию полей. Самый простой способ сделать это — удалить конструктор по умолчанию

Код: Выделить всё

struct Foo {
int a;
int b;
Foo() = delete;
};
Однако это отключает инициализацию в фигурных скобках, а это именно то, что я хочу, чтобы люди использовали!
Есть ли способ поддержать {}, {1, 2, "foo" и {.a = 1, .b = 2, .c = "foo" инициализация стиля при удалении конструктора по умолчанию? Я знаю, что можно использовать std::initializer_list для однородных элементов, но не думаю, что здесь это работает для всего.

Подробнее здесь: https://stackoverflow.com/questions/793 ... onstructor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»