For some reason I can't figure out the + operator. I can do += just fine, but when I try to do +, I keep getting the address of the object instead of the value. The program is dealing with fractions and simplifying them with Euclid's algorithm (to explain the class name). The code:
Basic class definition:
This is +=, which works perfectly:Code:class Euclid { public: //bunch of functions ... private: int numerator; int denominator; int simplify(int, int); };
This is +, which sucks:Code:Euclid &Euclid::operator +=(Euclid &fract) { numerator = ((numerator * fract.denominator) + (denominator * fract.numerator)); denominator = (denominator * fract.denominator); int gcd = simplify(numerator, denominator); numerator = (numerator)/gcd; denominator = (denominator)/gcd; return *this; }
And this is how they are being used in the actual program:Code:Euclid &Euclid::operator +(Euclid &fract) { Euclid temp(1,1); temp.numerator = ((numerator * fract.denominator) + (denominator * fract.numerator)); temp.denominator = (denominator * fract.denominator); int gcd = simplify(temp.numerator, temp.denominator); temp.numerator = (temp.numerator)/gcd; temp.denominator = (temp.denominator)/gcd; return temp; }
Code:cout<<"Adding 1/2 to this fraction..."<<endl; test = userfrac + half; cout<<"The reduced fraction is "<< test.getnum() <<"/"<< test.getdem() <<"."<<endl;



LinkBack URL
About LinkBacks


