我只是做了一个测试,有问题加两个分数,但得到一个错误,
no matching function for call to '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);
}
关于c++ - 结构错误 :"no matching function for call to ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004918/