可变长度的非pod元素数组

时间:2016-10-15 20:20:09

标签: c++

我正在尝试创建一个C ++程序来读取文本文件并标记文本的每个字段。到目前为止,我有这个,但我有一个错误,说"非POD元素类型的可变长度数组'员工'"不知道该怎么做所以我试图按照我读到的内容并在错误行下方对其进行评论,但这会产生更多错误。

int main () {
     string line1, line2;
     int i = 1, j=0;
     int numberOfRecords = 0;
     ifstream myInputFile ("emp.txt");
     ofstream myOutputFileSort1, myOutputFileSort2;
     myOutputFileSort1.open("emp3sort1.txt");
     myOutputFileSort2.open("emp3sort2.txt");

if(myInputFile.is_open())
{
    while(getline (myInputFile,line1))
    {
        numberOfRecords++;
    }
    myInputFile.close();
}

**Employee myEmployees [numberOfRecords];**//Variable length array of non-POD element type 'Employee'
//string *myEmployees = new string [numberOfRecords];//attempt to fix
ifstream myInputFileAgain ("emp.txt");
...

1 个答案:

答案 0 :(得分:1)

可变长度数组不是C ++的一部分。它们作为编译器扩展存在,但显然您的编译器仅支持POD(普通旧数据)类型。

您应该考虑改用std::vector

std::vector<Employee> myEmployees(numberOfRecords)

std::vector<Employee> myEmployees;
myEmployees.reserve(numberOfRecords); // optional, but recommended

第一个创建numberOfRecords Employee类型myEmployees[n]元素的“dyanmic数组”,您可以根据需要访问它们(numberOfRecords),后者只保留{{1}的内存雇员,但有0个元素。