c++ - 不能将类对象数组传递给函数?
问题描述
我正在尝试使用一个函数来计算平均成绩并将字母等级存储到“字母”中。但是,每当我尝试调用该函数时,我都会收到一条错误消息,提示“没有匹配对“findAvg”的调用。我不完全理解引用和指针。这是问题所在吗?感谢任何帮助和信息,谢谢。
#include <iostream>
#include <fstream>
using namespace std;
class Student{
public:
double grades[4];
float avgGrade;
string letter;
string name;
};
void findAvg(Student f[]);
int main(){
Student students[3];
int i = 0;
fstream fin;
fin.open("input1.txt");
while(!fin.eof()){
fin >> students[i].name;
for (int j =0; j < 4;++j){
fin >> students[i].grades[j];
}
i += 1;
}
fin. close();
findAvg(students[3]);
cout << students[1].letter;
}
void findAvg(Student f[]){
for(int i = 0;i<3;++i){
f[i].avgGrade = ((f[i].grades[0] + f[i].grades[1] + f[i].grades[2] + f[i].grades[3]) /4);
if (f[i].avgGrade>=90){
f[i].letter = "A";
} else if (89>f[i].avgGrade && f[i].avgGrade<=80){
f[i].letter = "B";
} else if (79>f[i].avgGrade && f[i].avgGrade<=70){
f[i].letter = "C";
} else if (69>f[i].avgGrade && f[i].avgGrade<=60){
f[i].letter = "D";
} else {
f[i].letter = "F";
}
}
}
解决方案
findAvg(students[3]);
应该
findAvg(students);
array[SIZE]
通过使用(其中 SIZE 是数组的大小)引用整个数组的想法是一个常见的新手错误。我猜它来自数组声明和表达式之间的混淆。但是声明和表达式不是一回事,适用不同的规则。在表达式中array[n]
总是引用数组的一个元素。此外,如果n
与数组的大小相同,那么您正在引用一个不存在的元素。
students[i].grades[j];
奇怪的是,例如,您在代码的每个其他部分都完美地正确处理了数组。但是由于某种原因,当您调用该findAvg
函数时,您认为适用不同的规则。
推荐阅读
- reactjs - 在 webpack 构建期间,如何使用 HOC 或 React 组件包装我的 React 组件?
- java - 如何反序列化java映射
- jquery - 如何使用 jquery 复制文本并添加标题属性
- javascript - 获取链接修改后重新加载数据
- vhdl - modelsim 仿真中无法识别 DUT
- c# - 无法在我的操作系统中使用 C# Cosmos 内核创建的目录中创建文件
- javascript - Firestore 文档侦听器不从服务器返回当前值
- android - 为“com.android.build.gradle.AppPlugin@1f27b383”读取“META-INF/MANIFEST.MF”时出错
- mongodb - 将 MongoDB Secondary 变为独立实例
- angular - Pristine 不更新表单内列表框中的更改