使用Friend函数和operator +添加类变量并打印出来

时间:2015-11-29 09:13:07

标签: c++ class dynamic-arrays friend-function

我编写了一个代码,它输入3个整数(整数,分子和分母)并将它们显示为“a {b / c}” 我已经定义/声明了一个类(小数),它包含这3个独立的整数变量以及读取和打印它们的函数。 为了存储其中几个不同的输出,我创建了一个定义的类类型的动态数组。 我想把所有的价值加在一起,例如 fract [0] .a + frac [1] .a ..等整数部分,找到分数部分的总和,然后显示它。

对于类声明,我已经包含了一个友元函数:

friend fraction operator +(fraction, fraction);

我还声明了2个类型分数

的动态数组
fraction* fracarry = new fraction[x];
fraction* fractot = new fraction[1];

fracarry存储输入分数,fractot初始化为:

numerator = 0;
denominator = 1;
integral = 0;

友元功能的定义如下:

fraction operator+(fraction, fraction)
{
for(int i = 0; i < x; i++)
{
 fractot[0].denominator += fracarry[i].denominator*fractot[0].denominator;
 fractot[0].integral += fracarry[i].integral;
 fractot[0].numerator += ((fracarry[i].numerator*fractot[0].denominator) + (fractot[0].numerator*fracarry[i].denominator));
}

 return fractot[0];
}

其中x是用户输入的输入数量。

主要功能是:

cout << " Please input how many fractions you will be inputting: " << endl;
cin >> x;


fraction *fracarry = new fraction[x];
fraction *fractot = new fraction[1];


fracarry[0].read();

fractot[0] = fractot[0] + fracarry[0];

fractot[0].print2();

我不确定我是否应该在函数定义或主函数中使用循环。它符合并且读取/打印功能有效,但我不能将它显示为fractot.print2()作为存储在fracarry中的值的最终总和

我不想要确切的代码,只是提示我可能出错的地方/要查找的内容,或任何可能有帮助的教程等等

谢谢!

**编辑 这与问题相同,但我试图减少不相关的代码/使其更符合要求!

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于以下几点:

fractot[0].integral =+ fracarry[j].integral;
fractot[0].numerator =+ fracarry[j].numerator;

为了将参数与自己的值相加,您必须这样写:+=