如何使用指针和指针算术

时间:2010-05-09 19:34:47

标签: c++ pointers

:错误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 *学生;

4 个答案:

答案 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]而不是使用括号