friend Fraction operator=(const Fraction &newfraction) {
Fraction changedfraction;
changedfraction.numerator = newfraction.numerator;
changedfraction.denominator = newfraction.denominator;
changedfraction.simplify(changedfraction.numerator,
changedfraction.denominator);
return (changedfraction);
}
ответ
Оператор присваивания с подписью Fraction operator=(const Fraction &newfraction)
должен быть членом. A friend
Функция не является членом. Таким образом, количество параметров не соответствует 2, необходимым для назначения. Удалите friend
и убедитесь, что он объявлен как функция-член.
struct Fraction
{
Fraction& operator=(const Fraction &newfraction) { .... }
....
};
отметить также, что традиционно оператор присваивания возвращает ссылку на *this
, а не значение.
большое спасибо juan. Я решил ошибку, но когда я называю ее основной, она дает некоторые произвольные числа мне. Я не могу принять правильный результат. – Can
@Can. Тогда ваша реализация должна быть глючной. – juanchopanza
- 1. Я хочу создающих таблицу, но это дает мне ошибку 1046
- 2. Какой оператор мне нужно перегружать?
- 3. Я пытаюсь создать простую таблицу, но это дает мне ошибку
- 4. Почему это дает мне ошибку?
- 5. Почему это дает мне эту ошибку arrayoutofbounds?
- 6. Должен ли я перегружать == Оператор?
- 7. Почему это, если заявление дает мне ошибку
- 8. Почему это дает мне ошибку MRO?
- 9. Почему это дает мне ошибку onclick?
- 10. Я хочу удалить одного пользователя в моем проекте в asp.net. Но это дает мне ошибку (throw;). Как это сделать?
- 11. Дата Javascript Дает мне EDT, но я хочу EST
- 12. window.getSelection() дает мне выделенный текст, но я хочу HTML
- 13. Это дает мне ошибку в GPS
- 14. Почему это дает мне ошибку: 80040154
- 15. Почему это дает мне неожиданную ошибку T_STRING?
- 16. Почему это дает мне ошибку переполнения стека?
- 17. Почему это для цикла дает мне ошибку?
- 18. Почему это дает мне логическую ошибку?
- 19. Почему это дает мне неопределенную ошибку?
- 20. Почему это дает мне ошибку? отсчет
- 21. Почему это дает мне ошибку сегментации?
- 22. VBA - Почему это дает мне ошибку?
- 23. это дает мне ошибку синтаксического анализа
- 24. «это» дает мне ошибку во фрагменте
- 25. как перегружать унарный/оператор?
- 26. Я не понимаю, почему это дает мне ошибку
- 27. Когда я скомпилировать это дает мне ошибку, Arduino стартер
- 28. Оператор = проблемы перегружать
- 29. Я получаю ошибки, я пытаюсь скомпилировать программу, но это дает мне ошибку в случае x
- 30. Программа не дает мне выход, я хочу
** Что ** ошибка ?. –
Это неортодоксальная версия оператора присваивания. Оператор присваивания должен делать только одну вещь и только одну вещь, а именно - создать копию переданного в объекте существующего объекта. Он не должен выполнять «бизнес-логику», такую как «упростить». – PaulMcKenzie
@PaulMcKenzie: Я не согласен. Если мы предположим, что 'simplify' не семантически изменяет присваиваемое значение, просто оптимизирует его представление, а затем ссылается на него абсолютно нормально. Это скорее похоже на 'std :: string', сокращающее его емкость на' swap'. Это не «бизнес-логика» (ненавижу этот термин!). Реальная проблема с функцией OP заключается в том, что это не член 'operator =' принимает только один операнд и даже не пытается назначить что-либо тому, что должно быть операндом LHS. –