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 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现