问题描述
我有一个带有私有类型 N(分子)和 D(分母)的分数类。这也允许类型具有不同的数字类型。我还制作了一个覆盖星号的运算符函数,以便我可以执行 x*y,其中 x 和 y 表示分数对象。但是,除非两者都只使用一种类型,否则它不起作用。我怎样才能解决这个问题?为该函数尝试了单独的模板,但似乎很复杂。此外,如果有一种方法可以在模板中只说数字类型(类似于 java 中的 Number 类),那将不胜感激:)
using namespace std;
template <typename N,typename D> class Fraction {
private:
N num;
D denom;
public:
Fraction(N numerator = 1,D denominator = 0) {
assert(numerator != 0);
this -> num = numerator;
this -> denom = denominator;
}
inline N getNumerator() { return num; }
inline D getDenominator() { return denom; }
void setNumerator(N numerator) { num = numerator; }
void setDenominator(D denominator) { denom = denominator; }
friend Fraction operator*(Fraction& f,Fraction& g) {
N numerator;
D denominator;
numerator = f.getNumerator() * g.getNumerator();
denominator = f.getDenominator() * g.getDenominator();
return Fraction(numerator,denominator);
}
friend Fraction operator*(const Fraction& f,int n) {
return Fraction(n*f.getNumerator,f.getDenominator());
}
friend ostream& operator<<(ostream& os,const Fraction& f ) {
return os << f.num << "/" << f.denom << endl;
}
};
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)