运算符重载“float”和“<<”
这个问题在这里已经有了答案:
您的输出operator<<
应接受流作为第一个参数,并将分数作为第二个参数。 现在,它做了相反的事情(分数是第一个参数,流是第二个参数)。 这意味着操作员没有被调用,而是将分数转换为float
,然后显示浮点数。
你写的操作符可以用a << cout
来调用,这显然是错误的。
您不应将其作为成员运算符,而应该将此运算符作为(朋友)非成员实现,而不在您的类中。
样本签名:
std::ostream& operator<<(std::ostream& os, const Fraction& f);
作为非会员(朋友)功能,在您的班级之外实施operator <<
。
请参阅运算符重载。
operator<<
不应该是类的成员,因为它需要将流对象作为其第一个参数,并具有签名ostream &operator<<(ostream &, Fraction)
。