【发布时间】:2021-10-22 10:53:36
【问题描述】:
我传递了一个函数来计算数组中所有数字的总和,但它输出为 0,这是我将它初始化为的值。该函数位于与实际程序不同的文件中(我还创建了一个名为 Stats 的类)。当我在函数中显示总和时,它会显示正确的数字。只有当我将它初始化为 0 时才会出错。当我通过函数时,我怎样才能使它在哪里,总数实际上更新到正确的数量而不是零。
const int num = 12;
class Stats
{
private:
double stats[num];
double total = 0;
public:
void setValue(double stats[num], int);
double calcTotal(double stats[num], double);
};
double Stats::calcTotal(double stats[num], double total)
{
total = 0;
for (int i = 0; i < num; i++)
{
total += stats[i];
}
cout << total;
return total;
}
int main()
{
double rainFall[num];
double total = 0;
Stats rainStats;
for (int i = 0; i < num; i++)
{
cout << "What was the rain fall for month #" << i + 1 << " ?" << endl;
cin >> rainFall[i];
rainStats.setValue(rainFall, num);
}
rainStats.calcTotal(rainFall, total);
cout << total;
return 0;
}
它在 int main() 中打印出 0,但在 calcTotal 中,它是正确的数量。
【问题讨论】:
-
显示的代码中有很多部分没有意义或不需要。但问题是
calcTotal返回total但你只是扔掉(忽略)返回的结果。 -
@Someprogrammerdude 你能告诉我什么没有意义,什么是不必要的
-
没有意义:将
total作为参数传递给calcTotal,而不是将其定义为局部变量。不必要的:整个班级,真的。calcTotal可能是非成员函数,并且根本不需要该类。只提两件事。
标签: c++ arrays function object parameter-passing