#c
#c
Вопрос:
У меня есть задание, которое мой учитель сказал нам использовать в файле .h:
operator string();
и мы никак не можем от этого отклониться.
Итак, в моем .cpp-файле у меня есть:
Currency::operator string(){
stringstream output;
output<<"$";
output<<dollars;//Why does this return garbage for money1 money2??
output<<".";
output<<cents;
string outputstring = output.str();
return outputstring;
}
Но когда я делаю string(money1 money2)
, это возвращает мусор, он работает нормально, когда я просто делаю ‘string(money1)`. Мне интересно, что я делаю не так.
Любая помощь будет отличной.
Вот мой перегруженный код оператора:
Currencyamp; Currency::operator (const Currency amp;rhs){
Currency temp;
temp.dollars = dollars rhs.dollars;
temp.cents = cents rhs.cents;
temp.simplify();
return temp;
}
Примечания: Я запустил отладчик, и с перегруженным оператором проблем нет; он возвращает то, что должен.
Комментарии:
1. Ваша ошибка, вероятно, заключается в вашем
operator
, а не вoperator string
.2. Возможно, ваша проблема в коде, который вы нам не показали. Пожалуйста, создайте минимальный, полный пример программы и скопируйте-вставьте его сюда. В процессе вы можете сами обнаружить ошибку. См . sscce.org для получения дополнительной информации.
3.То, что, по-
operator
видимому, возвращает ожидаемое значение, не означает, что оно правильное. Особенно с C .4. Я добавил сюда перегруженный код.
5. Ваш учитель неправ, запрещая вам изменять эту строку. Это должно быть
operator string() const;
Ответ №1:
Вот мой перегруженный код оператора:
Вы возвращаете локальную переменную по ссылке. Никогда не делайте этого.
Вы должны возвращать его по значению:
Currency Currency::operator (const Currency amp;rhs)
Комментарии:
1. Спасибо, я перепутал инструкции моего профессора. Я думал, что у него все было так, как было у меня изначально, но я ошибся. Теперь я исправил это, и ошибка исправлена.