[英]Error “Incomplete type is not allowed” in struct
我在 c++ 代碼中收到“不允許輸入不完整類型”錯誤。
我的程序是從輸入文件中讀取學生數據,按字母順序對姓名進行排序,然后將排序后的姓名連同其數據一起打印出來。 數據包括身份證號碼和考試成績。
輸入文件包括以下內容的重復: 1. 學生人數(16 人) 2. 考試次數(6 人) 3. 學生姓名 4. ID 號 5 - 10. 考試成績
output文件應包括以下重復: 1.姓名 2.身份證號 3.初試成績 4.平均成績 5.字母成績
以下是我的結構行:
struct sGrade
{
string Name[20];
int IDnum[20];
float scores[5];
};
但是在這里,在主線中,“sGrade Grade[size]”行中的“grade”會收到這種錯誤。
string s;
getline(inputf, s);
sizeS = stoi(s);
string t;
getline(inputf, t);
sizeT = stoi(t);
const int size = 16;
sGrade grade[size];
for (int i = 0; i < size; ++i)
{
getline(inputf, grade[i].Name);
getline(inputf, s);
grade[i].IDnum = stoi(s);
for (int j = 0; j < sizeT; ++j)
{
getline(inputf, grade[i].scores);
}
}
什么寫的不完整? 我必須以其他方式處理它嗎? 請為此建議我一些解決方案。
謝謝!
所以代碼中有很多問題,主要是類型不兼容。
getline(inputf, grade[i].Name);
表示grade[i].Name
應該是一個字符串,但它被聲明為一個包含 20 個字符串的數組。
grade[i].IDnum = stoi(s);
表示grade[i].IDnum
應該是一個int
但它被聲明為一個 20 個 int 的數組
getline(inputf, grade[i].scores)
表示grade[i].scores
應該是一個字符串,但它被聲明為一個包含 5 個浮點數的數組。
你必須更仔細地考慮你聲明的類型和你給東西的名字。 您真的希望sGrade
有 20 個名稱和 20 個 ID 嗎? 或者(更有可能)您真的希望sGrade
有一個名稱和一個 ID,然后聲明一個 20 個 sGrade 的數組?
這是我認為的代碼應該是什么,但只有你會確定
struct sGrade
{
string Name;
int IDnum;
float scores[5];
};
for (int i = 0; i < size; ++i)
{
getline(inputf, grade[i].Name);
getline(inputf, s);
grade[i].IDnum = stoi(s);
for (int j = 0; j < sizeT; ++j)
{
getline(inputf, s);
grade[i].scores[j] = stof(s);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.