结构中的错误"Incomplete type is not allowed"

Error "Incomplete type is not allowed" in struct

本文关键字:is not allowed type Incomplete 错误 结构      更新时间:2023-10-16

>我在 c++ 代码中收到"不允许不完整的类型"错误。

我的程序是从输入文件中读取学生数据,按字母顺序对姓名进行排序,并打印出排序后的姓名及其数据。数据包括身份证号码和考试成绩。

输入文件包括以下内容的重复: 1. 学生人数(16人( 2. 测试次数(即 6 次( 3. 学生姓名 4. 身份证号码 5 - 10.考试成绩

输出文件应包括以下内容的重复: 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 个整数的数组

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);
}
}
相关文章: