#include <iostream>

using namespace std;

class Rational{
public:
    Rational(int i, int j);
    void add(Rational rhs);
    void Print(){cout << num << "/" << denom << endl;};

    friend const Rational operator+(const Rational& lhs, const Rational& rhs);

private:
    int num;
    int denom;
};

int main(){

    Rational a(1,3);
    Rational b(1,5);
    //a.add(b); // a + b
    //b.add(a);

    //a.operator+(b);

    Rational c = a + b;

    c.Print();

    Rational d = a + (b + c);
    d = (a + b) + c; //breaks?
    d.Print();


    return 0;
}

Rational::Rational(int i, int j){
    num = i;
    denom = j;
}

void Rational::add(Rational r){
    int n = num * r.denom + r.num * denom;
    cout << n << "/" << denom * r.denom << endl;

}

const Rational operator+(const Rational& lhs, const Rational& rhs){
    int n = lhs.num * rhs.denom + rhs.num * lhs.denom;
    return Rational(n, lhs.denom * rhs.denom);
}

