分数运算符重载 我是C++的新手,我有一个操作符重载问题。我刚刚实现了头文件中的函数。我想将两个最简单形式的分数相加。为了简化,我实现了gcd,为了相加,我实现了运算符+。但运算符+中的部分有一个错误。错误是分数相加(f1.getNum1())f1高亮:“没有构造实例(分数::分数)与argumentlist匹配,类型为(int,int)” 代码如下: a& operator+=(const a& f1,const a& f2){ a add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2()); return add; } #endif
main.cpp code无运算符“在您的分数运算符重载 我是C++的新手,我有一个操作符重载问题。我刚刚实现了头文件中的函数。我想将两个最简单形式的分数相加。为了简化,我实现了gcd,为了相加,我实现了运算符+。但运算符+中的部分有一个错误。错误是分数相加(f1.getNum1())f1高亮:“没有构造实例(分数::分数)与argumentlist匹配,类型为(int,int)” 代码如下: a& operator+=(const a& f1,const a& f2){ a add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2()); return add; } #endif,c++,operator-overloading,fractions,C++,Operator Overloading,Fractions,main.cpp code无运算符“在您的运算符+=中,您声明了一个分数: fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2()); 其形式如下: fraction a(int1, int2); 但是您尚未为分数定义任何构造函数,该构造函数接受两个int参数。编译器(正确地)告诉您它不知道您的意思。在运算符+=中,您声明了一个分数: fraction add(f1.
运算符+=
中,您声明了一个分数:
fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());
其形式如下:
fraction a(int1, int2);
但是您尚未为
分数定义任何构造函数,该构造函数接受两个int
参数。编译器(正确地)告诉您它不知道您的意思。在运算符+=
中,您声明了一个分数:
fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());
其形式如下:
fraction a(int1, int2);
但是您还没有为包含两个int
参数的分数定义任何构造函数。编译器(正确地)告诉您它不知道您的意思。您的分数(int num1、int num2、int den1、int den2)
函数在设置它们之前使用this->num1
、this->num2
、this->den2
和this->den2
的值。dup?:)--将错误的参数传递给构造函数您的分数(int num1、int num2、int den1、int den2)
函数在设置它们之前使用this->num1
、this->num2
、this->den2
和this->den2
的值。dup?:)--将错误的参数传递给构造函数,或者您可以再次检查代码。我还有一个问题:(我把它附在报告末尾code@emre:您正在尝试同时执行两件事:添加两个分数,然后使用插入运算符将分数发送到cout
(您能再次检查代码吗?。我还有一个问题:(我把它附在报告末尾code@emre:您试图同时执行两件事:添加两个分数,并使用插入运算符(