我是 C++ 的新手,我遇到了运算符重载的问题。我刚刚在头文件中实现了这些功能。我想将两个最简单的小数形式相加。我实现了一个 gcd 以进行简化并实现了运算符 + 以将它们加在一起,但是我在运算符 + 中的部分出错了。错误在fraction add(f1.getNum1()) f1 被高亮显示:“没有与参数列表匹配的构造 (fraction::fraction) 实例,类型为 (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 代码中有另一个问题没有运算符“<<”匹配这些操作数操作数。我初始化构造函数。现在我想添加到小数。但是我得到一个错误对于结果左侧的 cout“<<”:result=fractional1+fractional2; cout << num1 <<"/"<< den1 <<"+"<<num2<<"/"<< den2 <<" = "<<result <<endl;
最佳答案
在您的 operator+=
中,您声明了一个分数:
fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());
这是以下形式:
fraction a(int1, int2);
但是您还没有为带有两个 int
参数的 fraction
定义任何构造函数。编译器(正确地)告诉您它不知道您的意思。
关于c++ - 分数运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30113427/