我只是做一个有问题的测试,将分数加两个,但出现错误,


  没有匹配的函数来调用'fraction :: fraction()'


我的代码(不完整):

#include <iostream>
using namespace std;

struct fraction{
    int numerator, denominator;
    fraction (int _numerator, int _denominator){
        numerator=_numerator;
        denominator=_denominator;
    }
};

fraction add(fraction a, fraction b){
    fraction result;
    result.numerator=a.numerator*b.denominator;
    result.denominator=a.denominator*b.numerator;
    return result;
}
void reduce(fraction &a)
{
    int n=0;
    for(int i=a.numerator;i>=1;i--)
    {
        if(a.numerator%i==0&&a.denominator%i==0)
        {
            n==i;
        }
    }
    a.numerator/=n;
    a.denominator/=n;

}

最佳答案

在您的add函数中

fraction result;


这将尝试默认构造result对象。但是fraction类没有默认的构造函数,这就是错误消息告诉您的内容。

为了解决这个问题,您需要在fraction类中添加默认构造函数,或使用类似

fraction add(fraction a, fraction b){
    return fraction(a.numerator*b.denominator, a.denominator*b.numerator);
}

09-10 03:15
查看更多