Harker299
2022-01-08 11:06
采纳率: 100%
浏览 27

C++结构体报错问题

定义分数结构体Per,重载Per相加符号,相加时化简。
struct Per
{
    int son, mom;
};

int gcd(int a, int b){
    int r, ok = 1, out;
    while(ok){
        r = a % b;
        if(r == 0){
            ok = 0;
            out = b;
        } else {
            a = b;
            b = r;
        }
    }
    return out;
}//最大公约数
int hj(int a, int b, int i){
    a = a / gcd(a, b);
    b = b / gcd(a, b);
    if(i) return b;
    else return a;
}//分子分母化简
Per operator + (const Per& a, const Per& b){
    int son = a.son * b.mom + a.mom * b.son;
    int mom = a.mom * b.mom;
    return Per(hj(son, mom, 0), hj(son, mom, 1));
}

ostream& operator << (ostream& out, const Per& p){
    out << p.son << "/" << p.mom;
    return out;
}

报错 no matching function for call to 'Per::Per(int, int)'

######查阅信息竞赛教材,发现刘汝佳在使用Point结构体时可以直接使用Point(int, int),所以没有头绪

两个分数Per相加,化简,输出.son / .mom
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题