Этот вопрос касается любого простого определения данных C++, в котором есть конструктор, который принимает все члены данных в качестве параметров и инициализирует их. Единственная причина для этого в расширенных списках инициализаторов - предотвратить ошибку только указания части структуры.Инициализировать все элементы структуры
Вот типичный способ написать такую-структуру:
struct Struct {
A a;
B b;
C c;
Struct(A a, B b, C c) : a(a) , b(b), c(c) {}
};
Это стоит заметить, что тип каждого члена записывается дважды, а имя четыре раза. На практике это означает, что код для таких структур довольно сжимаем. Есть ли более короткий способ написать эту структуру в C++?
C++ довольно многословный, и я думаю, что нет. Одно предостережение: вы должны использовать (например) 'a {a}, b {b}, c {c}', поскольку равномерная инициализация предпочтительна для более старой инициализации '()' (см. [Этот вопрос] (https: // programers.stackexchange.com/questions/133688/is-c11-uniform-initialization-a-replacement-for-the-old-style-syntax)) – Majora320
Этот класс не является обычным классом старых данных, потому что он не имеет конструктор по умолчанию. Вам нужно добавить 'Struct() = default;' –