I struggled with the redefinition problem. I want to write a class UniFraction like this.
template<typename Type>
class UniFraction {
private:
unsigned int id_;
Type numerator_;
Type denominator_;
public:
// some code
friend UniFraction<Type> operator+(UniFraction<Type> &first, UniFraction<Type> &second) {
// implementation for simple types
}
friend UniFraction<Polynomial> operator+(UniFraction<Polynomial> &first, UniFraction<Polynomial> &second) {
// implementation for polynomial fraction
}
}
3