У меня много бетонных конструкций, и я хочу обозначить поля как необязательные (настоящие или нет).Просто интересно, какие у людей есть идеи для достижения этой цели.Вот пример структуры (поля могут быть и другими структурами, даже векторами структур):
struct LogonMessage_t
{
Header_t header; // this points to another struct containing all primitives
std::string username;
std::string password;
std::vector<LogonOption_t> LogonOptions;
int subaccountid;
std::string Text;
}
Я бы хотел, чтобы все поля по умолчанию отсутствовали и включали их одно за другим, возможно, вих сеттеры.Поскольку эти структуры генерируются, предпочтительным будет общий метод.
Мои идеи на данный момент таковы:
- Битовая карта полей, указывающая, установлено поле или нет
- Использовать значения часового типа ("\ 0" для std ::строка, -1 для int, -1.0f для float
- Какой-то шаблон-контейнер / прокси, инкапсулирующий каждое поле, чтобы указать, установлено оно или нет, есть идеи? Я думаю, что это может быть лучшим подходом.
Кстати, использование карт или других контейнеров STL для инкапсуляции полей здесь не будет работать, они должны быть конкретными конструкциями.