声明和初始化struct类型变量时出错

时间:2019-07-16 12:48:16

标签: c++ arrays compiler-errors initialization declaration

在创建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]'

1 个答案:

答案 0 :(得分:4)

您声明了一个struct Employee类型的三个元素组成的数组。

此构造

struct Employee{

    char name[100];
    char address[100];

}emp[3];

等同于

struct Employee{

    char name[100];
    char address[100];

};

Employee emp[3];

该数组的每个元素只有一个数据成员nameaddress

所以你必须写个例子

getline(emp[i].name,100)

该循环的迭代次数不得超过三个。

此外,变量ch未初始化,并且在循环中未更改。