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

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

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

所以你必须写例如
getline(emp[i].name,100)

循环不得超过三个迭代。

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

https://stackoverflow.com/questions/57057644/

相关文章:

c++ - 以下代码段出了什么问题?

c# - 为什么编译器认为Environment.Exit可以返回?

c++ - "expected ';在返回语句之后,有人可以告诉我我的代码有什么问题吗?

c++ - 长双二维动态数组C++

c# - 如果其他语句不起作用

java - 为什么此代码段显示编译错误?

java - 我的method.add(int)不会将用户输入添加到我的数组中

c++ - 无法使用std::pair and constructors [closed]编译代码

c++ - g++,如何找到出错的地方?

objective-c - ARC 不允许将 'int' 隐式转换为 'id _Nonnull'