перегрузка оператора дроби

Я новичок в C++, и у меня проблема с перегрузкой операторов. Я только что реализовал функции в заголовочном файле. Я хочу добавить две простейшие формы дробных чисел друг к другу. Я реализовал gcd для упрощения и реализовал оператор + для добавления вместе, но я получил ошибку для части в операторе +. Ошибка находится в фракция add(f1.getNum1()) f1 выделена: «Нет экземпляра конструкции (fraction::fraction), соответствующего списку аргументов, типы (int,int)» Вот код:

a& operator+=(const a& f1,const a& f2){
    a add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());
    return add;
}

#endif

У меня есть другая проблема в коде main.cppни один оператор "‹‹" не соответствует этим операндам операндов. Я инициализирую конструктор. Теперь я хочу добавить к дробным числам. Но я получаю сообщение об ошибке для cout " ‹‹" слева от результата: result=fractional1+fractional2; cout << num1 <<"/"<< den1 <<"+"<<num2<<"/"<< den2 <<" = "<<result <<endl;


person eakn    schedule 07.05.2015    source источник
comment
Ваша функция fraction(int num1, int num2, int den1, int den2) использует значения this->num1, this->num2, this->den2 и this->den2 перед их установкой.   -  person David Schwartz    schedule 08.05.2015
comment
дурак? :) stackoverflow.com/q/30000121/86967 - передача неверных аргументов в конструктор   -  person Brent Bradburn    schedule 08.05.2015


Ответы (1)


В вашем operator+= вы объявляете дробь:

fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());

Это форма:

fraction a(int1, int2);

Но вы не определили конструктор для fraction, который принимает два аргумента int. Компилятор говорит вам (правильно), что не знает, что вы имеете в виду.

person Beta    schedule 07.05.2015
comment
Не могли бы вы еще раз проверить код, пожалуйста? У меня другая проблема :( Я прикрепил ее в конце кода - person eakn; 08.05.2015
comment
@emre: вы пытаетесь сделать две вещи одновременно: добавить две дроби и отправить дробь в cout с помощью оператора вставки (<<). Кроме того, вы забыли написать оператор вставки для fraction. По возможности разрабатывайте новые функции изолированно. - person Beta; 08.05.2015