Есть кодовая база, в которой нужно закрыть доступ к полю структуры. Использование классических 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;
}
Вопрос - какие достоинства и недостатки у этих двух способов? Для меня пока плюс второго варианта в том, что мне не нужно будет модифицировать уж существующий код и я пока на его стороне. Но нет ли там каких подводных камней?



