复制对象数组

时间:2018-05-14 23:14:12

标签: c++ arrays class object dynamic

我正在尝试在数组Subject中创建一个动态数组对象,它接收一个输入文件,并根据有多少主题,继续创建一个新大小的新数组。这是我一直在测试的。我得到的错误是分段错误。我不明白为什么。

输入文件是subjects.txt,其中包含学生和ID,如下所示:

英语123456

跳舞123457

int main (int argc, char** argv)  
{
    ifstream input;
    input.open("subjects.txt");

    string subject;
    string id;
    int index;
    int size;

    index = 0;
    size = 1;

    Subject *array;
    Subject *temp;

    array = new Subject[size];

    while (fin >> subject) {
        input >> id;

        array[index].set_subject(subject);
        array[index].set_id(id);

        temp = new Subject[size];

        for (int i = 0; i < size; i++) {
            temp[i].set_subject(array[i].get_subject());
            temp[i].set_id(array[i].get_id());
        }

        size++;
        delete [] array;
        array = temp;
        index++;
    }

    return 0;
}

谢谢。

1 个答案:

答案 0 :(得分:0)

数组array从该循环中出现的大小与进入时的大小相同。然后,​​您尝试写入它的末尾,并获得分段错误。

改变这个:

temp = new Subject[size];

到此:

temp = new Subject[size+1];