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

标签 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]'

最佳答案

您声明了一个由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尚未初始化,并且在循环中未更改。

关于c++ - 声明和初始化struct类型变量时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57057644/

相关文章:

c++ - 如何将文件的元素放入列表中?

c++ - 在按降序排序的 vector 中查找严格小于某个键的第一个元素

ios - 返回数组的快速函数

c++ - 具有多个模板参数错误的模板部分特化

c++ - 使用node-ffi时如何防止Node崩溃

C++:二维数组作为类成员

java - 数组隐私 Java - 基础

javascript - 按值复制数组

c++ - 双重标准?为什么只对 char* const& a = "bla"发出警告?

c++ - 尝试解决 "out of scope"编译错误 : CodeBlocks, Linux Fedora