Let me post the code, maybe you guys will see where I'm going wrong. Don't worry about the rest of the code, I just need help with the operators.. += and such

Code:

#include <sstream>
`
class rational
{
private:
int num;
int den;
public:
rational(int rn, int rd);
rational();
string tostring() const;
int operator += (rational& rhs);
int operator -= (rational& rhs);
int operator *= (int& rhs);
int operator /= (rational& rhs);
int compare (const rational& rhs) const;
int setden(int denom);
int setnum(int numer);
int denominator() const;
int numerator() const;
};
ostream& operator << (ostream& os, const rational& r);
rational::rational(int rn , int rd)
: num(rn), den(rd)
{}
rational::rational()
: num(0), den(1)
{}
int rational::compare (const rational& rhs) const
{
if(den == rhs.den)
return 0;
if(den > rhs.den)
return 1;
if(den < rhs.den)
return -1;
}
int rational::setden(int denom)
{
den = denom;
}
int rational::setnum(int numer)
{
num = numer;
}
int rational::denominator() const
{
return den;
}
int rational::numerator() const
{
return num;
}
int rational::operator += (rational& rhs)
{
num += rhs.num;
den += rhs.den;
}
int rational::operator -= (rational& rhs)
{
num -= rhs.num;
den -= rhs.den;
}
int rational::operator *= (int& rhs)
{
num *= rhs;
den *= rhs;
}
int rational::operator /= (rational& rhs)
{
num /= rhs.num;
den /= rhs.den;
}
string rational::tostring() const
{
ostringstream out;
out << num << "/" << den;
return out.str();
}
ostream& operator << (ostream& os, const rational& r)
{
os << r.tostring();
return os;
}