weixin_46053407 2019-12-28 13:13 采纳率: 33.3%
浏览 145

想请问这个程序哪里出了错?

#include
using namespace std;

class Rational {
public:
void read();
void print();
void sum(Rational r);
void prod(Rational r);
void minus(Rational r);
void div(Rational r);
private:
int num;
int den;
void reduce()
{
int a,b;
for(int i=1;i<min(num,den);++i)
{
if(num%i==0&den%i==0)
{
a=num/i;
b=den/i;
}
}
num=a;
den=b;
}
};

void Rational:: read()
{
cin>>num>>den;
}

void Rational:: print()
{
if(num!=den)
cout<<num<<'/'<<den;
else
cout<<1;
}

void Rational:: sum(Rational r)
{
num=num*r.den+r.num*den;
den=den*r.den;
reduce();
print();
}

void Rational:: prod(Rational r)
{
num=num*r.num;
den=den*r.den;
reduce();
print();
}

void Rational:: minus(Rational r)
{
num=num*r.den-r.num*den;
den=den*r.den;
reduce();
print();
}

void Rational:: div(Rational r)
{
num=num*r.den;
den=den*r.num;
reduce();
print();
}

int main() {
Rational a, b;
a.read();
b.read();
a.sum(b).print(); cout << endl;//以下四行报错: invalid use of 'void'
a.prod(b).print(); cout << endl;
a.minus(b).print(); cout << endl;
a.div(b).print(); cout << endl;
return 0;
}


  • 写回答

1条回答 默认 最新

  • threenewbee 2019-12-28 13:19
    关注
    因为sum等函数返回void,所以不能 .print
    有两个修改方式,任选其一
    
    一个是
    a.sum(b).print();
    ->
    a.sum(b);
    a.print();
    别的类似
    
    另一个是
    Rational Rational:: sum(Rational r)
    {
    num=num*r.den+r.num*den;
    den=den*r.den;
    reduce();
    print();
    return *this;
    }
    别的类似
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题