Harker299 2022-01-08 11:06 采纳率: 100%
浏览 86
已结题

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条回答 默认 最新

  • 关注

    没有相应的构造函数
    结构体修改如下:

    
    struct Per
    {
        int son, mom;
        Per(){son=0;mom=0;}
        Per(int a,int b){son=a;mom=b;}
    };
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵