Re[3]: Инициализация через initializer_list и protected/priv
От: rg45 СССР  
Дата: 30.05.22 20:23
Оценка: 4 (1)
Здравствуйте, Marty, Вы писали:

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";
}
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 30.05.2022 20:29 rg45 . Предыдущая версия . Еще …
Отредактировано 30.05.2022 20:28 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.