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;
    }
    别的类似
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题