Ваша вторая функция (operator+
) является автономной, она не является участником.Ваша первая функция (Money::operator+=
) является функцией-членом;вы не можете просто использовать функцию + = member, как если бы она была автономной.
Итак, во второй функции вы, вероятно, захотите сделать что-то вроде:
Money operator+ (const Money &first, const Money &second) noexcept
{
Money sum{first};
sum += second;
return sum;
}
Имеясказал, что - вы также должны следовать совету @ πάνταῥεῖ и читать:
Каковы основные правила и идиомы для перегрузки операторов?