簡體   English   中英

結構中的錯誤“不允許不完整類型”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM