【问题标题】:fraction operator overloading分数运算符重载
【发布时间】:2015-07-18 18:08:06
【问题描述】:

我是 C++ 新手,遇到运算符重载问题。我刚刚实现了头文件中的函数。我想将两个最简单的小数形式相加。我实现了一个 gcd 来简化并实现了 operator + 用于 addinf 一起但我在 operator+ 中的部分出现错误。错误在fraction add(f1.getNum1()) f1 is highligted:“没有构造实例 (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;

【问题讨论】:

  • 您的fraction(int num1, int num2, int den1, int den2) 函数在设置之前使用this-&gt;num1this-&gt;num2this-&gt;den2this-&gt;den2 的值。
  • 重复? :) stackoverflow.com/q/30000121/86967 -- 将错误的参数传递给构造函数

标签: c++ operator-overloading fractions


【解决方案1】:

在您的operator+= 中,您声明了一个分数:

fraction add(f1.getNum1()*f2.getDen2()+f2.getNum2()*f1.getDen1(),f1.getDen1()*f2.getDen2());

格式如下:

fraction a(int1, int2);

但是您还没有为fraction 定义任何带有两个int 参数的构造函数。编译器(正确地)告诉你它不知道你的意思。

【讨论】:

  • 你能再检查一下代码吗?我还有一个问题:(我附在代码的末尾
  • @emre:您正试图同时做两件事:添加两个分数,然后使用插入运算符 (&lt;&lt;) 将分数发送到 cout您还忽略了为fraction 编写插入运算符。 尽可能单独开发新功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多