I was brushing up on my C++....overloading operators, that is. So I got to writing the good ol' Fraction class. However, I ran into these errors that I'm not sure how to fix.

Code:

class Fraction{
public:
int num, den, coef; //numerator, denominator, coefficient
Fraction():num(1),den(1),coef(0){} //default constructor
Fraction(int numx, int denomx){
num=numx;
den=denomx;
coef=0;
}
~Fraction(){}
Fraction& operator+(Fraction& frac2);
void print(){std::cout<<num<<"/"<<den<<"\n";}
};
Fraction& Fraction::operator+(Fraction& frac2){
Fraction temp;
**temp.num = (this.num * frac2.den) + (this.den * frac2.num);**//new numerator
temp.den = this.den*frac2.den;
return temp;
}
int main(void){
Fraction A(1,2);
Fraction B(2,3);
Fraction C = A+B;
C.print();
std::cin.get();
return 0;
}

'num' is not a type

'den' is not a type

request for member of non-aggregate type before '*' token