Вы перегружаете унарный оператор присваивания, который предназначен для присвоения определенного типа DecoratedString
и должен возвращать ссылку на DecoratedString
, чтобы вы могли связывать назначения.Этот оператор не предназначен для того, чтобы позволить вам присвоить объект DecoratedString
другому типу данных, но, скорее, вы можете назначить объект, который не обязательно DecoratedString
, для DecoratedString
.Он также дает вам четко определенную функцию для обработки любого вида специфической обработки, которая может потребоваться для присваивания вашего класса (например, глубокое копирование).
Вы должны либо вызвать функцию ToString()
, либо выВам нужно будет создать оператор преобразования, который может преобразовать ваш DecoratedString
в std::string
, реализовав следующую функцию-член для DecoratedString
:
operator std::string () const;
Это может быть или не быть хорошей идеей, так какэтот оператор преобразования будет неявно использоваться компилятором и может привести к непредвиденному поведению.
Кроме того, еще одна причина, по которой перегрузка вашего оператора не работает, заключается в том, что вы пытаетесь перегрузить функцию ее возвращаемым значением, что является большим нет-нет в C ++.