c++ - 结构错误 :"no matching function for call to "

标签 c++ struct

我只是做了一个测试,有问题加两个分数,但得到一个错误,

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/

相关文章:

c - 我无法为此结构分配内存

c++ - 如何通过简单的乘法将纹理颜色混合到其下面的颜色?

c++ - 声明嵌套结构的指针

c++ - 如何检查点是否属于 ConvexShape?

c++ - Visual Studio 作为代码浏览器 : How to preserve the directory structure?

c++ - 二维数组与结构 (C++)

c - 动态分配的结构数组

c++ - 带有枚举的结构在 C 和 C++ 中是不同的,为什么?

c++ - 将原始指针移动到创建的函数中的下一个字符

c++ - 如何为 C++ Visual Studio 2019 指定应用程序图标?