:错误C2064:term不评估为带有1个参数的函数 :错误C2227:' - > name'的左边必须指向class / struct / union / generic type
如何修复此问题,以免发生此错误
for(int index = 0; index < (numStudents); index++)
{
if (student(index + 1)->score >= 90 )
student(index + 1)->grade = 'A';
else if (student(index + 1)->score >= 80 )
student(index + 1)->grade = 'B';
else if (student(index + 1)->score >= 70 )
student(index + 1)->grade = 'C';
else if (student(index + 1)->score >= 60 )
student(index + 1)->grade = 'D';
else
student(index + 1)->grade = 'F';
}
继承人的结构:
struct StudentType
{
string name;
int score;
char grade;
};
这是指针: StudentType *学生;
答案 0 :(得分:5)
我的猜测是你需要做的
student[index + 1]
而不是
student(index + 1)
你应该真正指定student
是什么,以便人们可以回答这个问题。
答案 1 :(得分:1)
从你的评论答案看来,学生是一个指针。在这种情况下,student(index + 1)
不是有效的语法。我想你的意思是student[index + 1]
。
进一步批评 - C中基于1的数组是不好的形式。考虑从0开始,就像C
中的其他人一样答案 2 :(得分:1)
学生是方法/功能还是数组?也许这就是你的意思:
for (int index = 0; index < numStudents; index++) { // ensure that we don't go past the end of the student array if (index + 1 == numStudents) break; if (student[index + 1]->score >= 90) student[index + 1]->grade = 'A'; else if (student[index + 1]->score >= 80) student[index + 1]->grade = 'B'; else if (student[index + 1]->score >= 70) student[index + 1]->grade = 'C'; else if (student[index + 1]->score >= 60) student[index + 1]->grade = 'D'; else student[index + 1]->grade = 'F'; }
虽然我不明白你为什么要避开第一个学生(学生[0])。你知道数组是从零开始的,对吧?如果将索引变量初始化为1而不是0,则可以在没有所有'index + 1'的情况下实现相同的效果。
答案 3 :(得分:0)
我很确定它试图告诉你的是student
函数不只是一个参数。因为它实际上无法调用函数错误的第二部分然后告诉你它不能用在->
的左边
很难说没有更多细节(具体来说,student
是什么),但假设student
是一个向量或数组,你很可能会说student[index + 1]
而不是使用括号