在统计学家类中实现乘数

Implementing a multiplier in a statistician class

本文关键字:实现 统计学家      更新时间:2023-10-16

我正在为我的数据结构类做一个编程作业,我们正在做一个统计学家类。我们必须具备的功能之一是能够获取统计学家列表(计数、总和、最小值、最大值和平均值(并将其乘以某个整数。以下是我到目前为止对特定功能的看法。然而,我不知道该去哪里,因为它似乎很糟糕。

statistician operator *(double scale, const statistician& s)
{
    scale*s;
    return s;
}

附上 .h 文件,解释了我正在尝试做什么。 我正在编写此 .h 文件的实现文件,并试图弄清楚如何编写 .h 文件注释中定义的统计学家运算符*

http://www.cs.colorado.edu/%7Emain/projects/stats.h

感谢您的任何帮助

您编写的代码看起来像可以编译,但会导致无限循环,因为它调用了自身。 scale*soperator*(scale, s)的快捷方式,是当前正在定义的函数。 您需要将编译器的行scale*s替换为婴儿步骤。 它看起来像这样:

statistician operator *(double scale, const statistician& s)
{
    statistician result
    result.count = /*???*/;
    result.total = /*???*/;
    /*etc*/;
    return result;
}

一旦定义了,您可能还需要 statistician*double ,它可以简单地按照double*statistician的方式执行您编程的操作。 (请注意,它不需要是友元类,因为它只调用公共函数(

statistician operator *(const statistician& s, double scale)
{
    return operator *(scale, s);
}

您正在尝试创建类统计员的副本,但按比例缩放。 类似的东西

statistician operator *(double scale, const statistician& s)
{
    statistician result(s);
    result.total *= scale;
    result.tinyest *= scale;
    result.largest *= scale;
    return result;
}

成员函数 scaleBy 会将相应的成员变量乘以适当的小数位数。

您不会缩放计数。 如果你的统计学家类有类似方差的东西,你可能会把它乘以尺度的平方。

您是在类内部还是在类外部实现运算符?阅读C++中的操作员,并做出决定!