c++ - 分数运算符重载

标签 c++ operator-overloading fractions

我是 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/

相关文章:

c++ - 当我制作一个父类的 vector 时,如果我把一个 child 放在那里, child 的成员会丢失吗?

C++ 运算符重载错误检查无异常

Python GCD - 错误

php - 小数赔率转换超时

c++在解析错误输入时 boost 时间验证

c++ - 有没有办法在不破坏窗口/上下文的情况下切换全屏?

c++ - 如何复制匿名 union

c++ - 为 std::unordered_map 中的 const std::reference_wrapper 重载 operator==

operator-overloading - 参数化结构的运算符依赖于另一个运算符

php - 将分数转换为 html 实体