hi,
I'm studing the + and the = operator overloading to make something like obj1 = obj2 + obj3, but my code wont run here is it:
please see the main program at the botton
Code:
//class definition
class NRacionales{
friend ostream &operator<<(ostream &, const NRacionales &);
public:
NRacionales(int = 1, int = 1);
NRacionales operator+(const NRacionales &);
NRacionales &operator=(NRacionales &);
.
.
private:
int numerador;
int denominador;
}
//function definitions
//definition of << overloading not need it here
NRacionales::NRacionales(int num, int den)
{
numerador = num;
denominador = den;
}
//+ operator overloaded
NRacionales NRacionales::operator+(const NRacionales &derecha)
{
//returns an instance of the class
return NRacionales((numerador * derecha.denominador) +
(derecha.numerador * denominador), (denominador * derecha.denominador));
}
//= operator overloaded
NRacionales &NRacionales::operator=(NRacionales &derecha)
{
numerador = derecha.numerador;
denominador = derecha.denominador;
return *this;
}
//main
int main()
{
NRacionales n1(8,4);
NRacionales n2(9,3);
NRacionales n4;
//this block of code works fine
cout << "N1= " << n1 << endl;
cout << "N2= " << n2 << endl;
cout << "N4= " << n4 << endl;
//this line of code works fine
cout << "\nn1 + n2 = " << n1 + n2 << endl;
//this dont work , why?
n4 = n1 + n2;
cout << "\nn4 = n1 + n2 = " << n4 << endl;
system("pause");
return 0;
}
ok here is the error message the compiler generates(dev c++):
28 C:\programas c++\ejer8_17\main.cpp
no match for `NRacionales& = NRacionales' operator
28 C:\programas c++\ejer8_17\fracciones.h
candidates are: NRacionales& NRacionales::operator=(NRacionales&)
please excuse my poor english