我在创建Employee(struct)用户定义类型的变量时遇到问题。错误说不允许这样的struct类型的成员。
struct Employee{
char name[100];
char address[100];
}emp[3];
int main(){
char ch;
int i=-1;
fstream in;
in.open("Muhammad.txt",ios::out|ios::binary|ios::ate);
do{
i++;
cout<<"\nEnter name:";cin.getline(emp.name[i],100);//error line
cout<<"\nEnter address:";cin.getline(emp.address[i],100);//error line
in.write( reinterpret_cast<char*>(&emp[i]),sizeof(Employee));
}while(ch=='y'||ch=='Y');
system("PAUSE");
return 0;
}
预期将正常创建Employee对象
但出现以下错误:
[错误]请求'emp'中的成员'name',它是非类类型'Employee [3]'
最佳答案
您声明了一个由struct Employee
类型的三个元素组成的数组。
这个建筑
struct Employee{
char name[100];
char address[100];
}emp[3];
相当于
struct Employee{
char name[100];
char address[100];
};
Employee emp[3];
并且数组的每个元素只有一个数据成员
name
和address
。所以你必须写例如
getline(emp[i].name,100)
循环不得超过三个迭代。
此外,变量
ch
尚未初始化,并且在循环中未更改。
关于c++ - 声明和初始化struct类型变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57057644/