2010-05-09 71 views
0

:錯誤C2064:術語不計算爲服用1個參數 的函數:錯誤C2227:左「 - >名稱」必須指向類/結構/聯合/通用型如何使用指針和指針aritmetic

我該怎麼辦解決這一問題,以便該錯誤不會發生

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 *學生;

+3

'student()'返回什麼? – 2010-05-09 19:36:13

+1

您發佈了錯誤的代碼部分,這裏沒有使用名稱成員。 – Pieter 2010-05-09 19:37:25

+0

這是一個void函數,但是StudentType *學生和學生類型是 struct StudentType { \t string name; \t int分數; \t char grade; }; – booby 2010-05-09 19:37:58

回答

5

我的猜測是,你需要做的,而不是

student[index + 1] 

student(index + 1) 

你真的應該規定什麼是student這樣的人能回答這個問題。

1

從您的評論答案看來,學生是一個指針。在這種情況下,student(index + 1)是無效的語法。我想你的意思是student[index + 1]

進一步的批判 - 在C中的基於1的數組是壞的形式。考慮從0開始,像其他所有人一樣C

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,您可以達到相同的效果,但不需要所有'索引+1'。

+0

但它需要在指針算術,我做它完全錯誤,因爲我甚至沒有意識到,它跳過了0 – booby 2010-05-09 19:44:15

+0

所以,你的意思是你必須使用:

 if ((student + index)->score >= 90) (student + index)->grade = 'A'; 
我覺得更難閱讀,但我猜如果你*必須*在那裏使用指針算術。 – smountcastle 2010-05-10 13:05:02

0

我很確定它試圖告訴您的是student函數沒有隻需要一個參數。因爲它實際上無法調用函數,所以錯誤的第二部分會告訴你它不能用於左邊的->

很難說沒有更多細節(具體來說,什麼是student),但是假設student是最有可能代表使用括號的student[index + 1]的矢量或數組。