Внешний конструктор
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 19.08.15 07:36
Оценка: 46 (3)
Довольно элегантное решение для читабельной, одношаговой инициализации сложных структур данных в C++: http://gerardmeier.com/foreign-constructors-cpp
В кратце:
struct Font {
    ...
    // The foreign constructor.
    Font(std::function visit) {
        visit(*this);
    }
};
class Button {
    const Font font = Font([] (Font& font) {
        font.weight = Weight::VeryBold;
        font.slant  = Slang::Oblique;
        font.halign = Anchor::Left;
    });
};

Единственное что мне не нравится, доступа к protected/private полям класса без сеттеров уже не получить, что делает подобный подход чуть менее читабельным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.