我只是做一个有问题的测试,将分数加两个,但出现错误,
没有匹配的函数来调用'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);
}