2015-05-07 3 views
1

Я новичок в C++, и у меня есть проблема с перегрузкой оператора. Я только что реализовал функции в файле заголовка. Я хочу добавить две дробные числа в простую форму друг другу. Я реализовал gcd для упрощения и реализовал оператор + для добавления вместе bu. Я получил ошибку для части в operator + .Error находится в фракцию добавить (f1.getNum1()) f1 не highligted: "ни одного примера конструкции (фракция :: фракции) согласования СпискаАргументов, типы (интермедиат, 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 

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

+0

Функция 'fraction (int num1, int num2, int den1, int den2)' использует значение 'this-> num1',' this-> num2', 'this-> den2' и' this- > den2' перед их настройкой. –

+0

dup? :) http://stackoverflow.com/q/30000121/86967 - передача неправильных аргументов конструктору – nobar

ответ

4

В вашем operator+=, вы объявляете часть:

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

Это имеет вид:

fraction a(int1, int2); 

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

+0

Можете ли вы проверить код еще раз, пожалуйста?. У меня есть другая проблема :(Я приложил его в конце кода – eakn

+0

@emre: вы пытаетесь сделать сразу две вещи: добавьте две фракции и отправьте дробь в 'cout' с помощью оператора вставки (' << '). ** Также вы пренебрегли записью оператора вставки для' fraction '. ** Разрабатывайте новые функции в изоляции каждый раз, когда можете. – Beta

Смежные вопросы