Есть кодовая база, в которой нужно закрыть доступ к полю структуры. Использование классических get()/set() дело понятное и привычное. Но есть еще один способ реализовать свойства - с помощью конструкторов и операторов приведения.
ВАЖНО: в структуре только одно поле. по факту это замена встроенного типа на свой тип с более сложной логикой.
Классика
struct Value
{
float getValue() { return _value; }
void setValue(float v) { _value = v; }
private:
float _value;
}
Через конструктор и оператор приведения
struct Value
{
float() { return _value; }
Value(float v) { _value = v; }
private:
float _value;
}
Вопрос - какие достоинства и недостатки у этих двух способов? Для меня пока плюс второго варианта в том, что мне не нужно будет модифицировать уж существующий код и я пока на его стороне. Но нет ли там каких подводных камней?