-2

大家好,尽管我对 Java 基础知识有所了解,但我对 c++ 还是很陌生。

我有这个运算符<<:

std::ostream& operator<<(std::ostream& out, Rational& r) {
    int a;
    int b;
    int c;
    int d;

    b = r.n_;
    c = r.d_;
    if (c >= b) {
        a = (b / c);
        d = (b % c);

        r.n_ = d;}


    return out << r.n_ << '/' << r.d_;
    }

基本上我想做的是;如果我要输出的分数是假分数,我希望能够在输出之前将其转换为带分数的格式。我已经编写了 if 语句来计算混合数,但我无法弄清楚如何使用 << 运算符输出它,因为它只能接受两个参数。如果有办法做到这一点(无需编辑类实例变量。)。

(Rational 类有两个实例变量 Numerator 和 Denominator)

任何帮助或想法将不胜感激,在此先感谢。^^

提前致谢。

4

1 回答 1

3

我不太明白您所说的“<<运算符只能采用两个参数”是什么意思。看起来你正在尝试做这样的事情:

std::ostream& operator<<(std::ostream& out, Rational& r)
{
    if (r.n_ > r.d_)
    {
        int whole = r.n_ / r.d_;
        int numerator = r.n_ % r.d_;
        return out << whole << ' ' << numerator << '/' << r.d_;
    }

    return out << r.n_ << '/' << r.d_;
}

我认为这似乎很简单。也许我错过了你的问题?

于 2013-04-30T05:04:07.610 回答