首页 > 解决方案 > 数组必须用大括号括起来的初始化器初始化

问题描述

在我初始化的行中,以下函数出现错误e1

error: array must be initialized with a brace-enclosed initializer
   EmployeeInfo e1={id, n, p};

void addNewEmployee(){
  int id; char n[25]; double p;
  cout<<"\nEnter employee ID: "; cin>>id;
  cout<<"Enter employee name: "; cin>>n;
  cout<<"Enter employee pay rate: "; cin>>p;
  EmployeeInfo e1={id, n, p};
  ofstream fout("employee.dat", ios::out|ios::app);
  fout<<e1.employee_ID<<" "<<e1.name<<" "<<e1.pay_rate<<"\n";
}

结构员工信息由以下给出:

struct EmployeeInfo
{
  int employee_ID;
  char name[25];
  double pay_rate;
};

我该如何纠正这个错误?

标签: c++

解决方案


我该如何纠正这个错误?

选项1:

使用std::string而不是char[25]for name

struct EmployeeInfo
{
  int employee_ID;
  std::string name;
  double pay_rate;
};

选项 2

直接读入EmployeeInfo.

void addNewEmployee(){
  EmployeeInfo e1;
  cout << "\nEnter employee ID: "; cin >> e1.employee_ID;
  cout << "Enter employee name: "; cin >> e1.name;
  cout << "Enter employee pay rate: "; cin >> e1.pay_rate;
  ofstream fout("employee.dat", ios::out|ios::app);
  fout << e1.employee_ID << " " << e1.name << " " << e1.pay_rate << "\n";
}

选项 3

使用选项 1选项 2

struct EmployeeInfo
{
  int employee_ID;
  std::string name;
  double pay_rate;
};

void addNewEmployee(){
  EmployeeInfo e1;
  cout << "\nEnter employee ID: "; cin >> e1.employee_ID;
  cout << "Enter employee name: "; cin >> e1.name;
  cout << "Enter employee pay rate: "; cin >> e1.pay_rate;
  ofstream fout("employee.dat", ios::out|ios::app);
  fout << e1.employee_ID << " " << e1.name << " " << e1.pay_rate << "\n";
}

推荐阅读