Сообщение Re[3]: Инициализация через initializer_list и protected/priv от 30.05.2022 20:23
Изменено 30.05.2022 20:29 rg45
Re[3]: Инициализация через initializer_list и protected/priv
Здравствуйте, Marty, Вы писали:
M>>
M>а) без лишней писанины уже не получается
M>б) не надо ли тогда и другие конструкторы описывать хотя бы как = default?
Так добавь значения по умалчанию к формальным параметрам конструктора и инициализация получится по форме очень похожа на агрегатную:
http://coliru.stacked-crooked.com/a/907b00964ddf04ef
M>>
Test (int vi1, int vi2, int vi3){ i1 = vi1; i2 = vi2; i3 = vi3; }
M>а) без лишней писанины уже не получается
M>б) не надо ли тогда и другие конструкторы описывать хотя бы как = default?
Так добавь значения по умалчанию к формальным параметрам конструктора и инициализация получится по форме очень похожа на агрегатную:
http://coliru.stacked-crooked.com/a/907b00964ddf04ef
#include <iostream>
struct Test
{
int i1;
int i2;
protected:
int i3;
public:
Test(int i1 = {}, int i2 = {}, int i3 = {}) : i1(i1), i2(i2), i3(i3) {}
int getI3() const { return i3; }
void setI3( int vi3 ) { i3 = vi3; }
};
int main()
{
Test x;
Test y{1};
Test z{1, 2};
Test t{ 1, 2, 3 };
//Test t = { 1, 2, 3 };
std::cout << t.i1 << ", " << t.i2 << "\n";
}
Re[3]: Инициализация через initializer_list и protected/priv
Здравствуйте, Marty, Вы писали:
M>>
M>а) без лишней писанины уже не получается
M>б) не надо ли тогда и другие конструкторы описывать хотя бы как = default?
Так добавь значения по умолчанию к формальным параметрам конструктора и инициализация получится по форме очень похожа на агрегатную:
http://coliru.stacked-crooked.com/a/907b00964ddf04ef
M>>
Test (int vi1, int vi2, int vi3){ i1 = vi1; i2 = vi2; i3 = vi3; }
M>а) без лишней писанины уже не получается
M>б) не надо ли тогда и другие конструкторы описывать хотя бы как = default?
Так добавь значения по умолчанию к формальным параметрам конструктора и инициализация получится по форме очень похожа на агрегатную:
http://coliru.stacked-crooked.com/a/907b00964ddf04ef
#include <iostream>
struct Test
{
int i1;
int i2;
protected:
int i3;
public:
Test(int i1 = {}, int i2 = {}, int i3 = {}) : i1(i1), i2(i2), i3(i3) {}
int getI3() const { return i3; }
void setI3( int vi3 ) { i3 = vi3; }
};
int main()
{
Test x;
Test y{1};
Test z{1, 2};
Test t{ 1, 2, 3 };
//Test t = { 1, 2, 3 };
std::cout << t.i1 << ", " << t.i2 << "\n";
}