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

using Friend function and operator+ to add class variables and print out

本文关键字:打印 类变量 添加 Friend 函数 operator+ 使用      更新时间:2023-10-16

我写了一段代码,它接受3个整数(整数、分子和分母)的输入,并将它们显示为"a{b/c}"我定义/声明了一个类(fraction),它包含这3个独立的整数变量以及读取和打印它们的函数。为了存储这些不同的输出,我创建了一个定义了类类型的动态数组。我想把所有的价值加在一起fract[0].a+frac[1].a…etc的整数部分,并找到分数部分的和,然后显示它。

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

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 中存储的值的最终总和

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

谢谢!

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

我认为您的问题在于以下几行:

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

为了将参数与其自身的值求和,必须这样写:+=