Копирование массивов объектов - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь создать динамический массив объектов в массиве. Subject, который принимает входной файл и, в зависимости от количества объектов, продолжит создавать новый массив нового размера.Вот что я тестировал.Ошибка, которую я получаю, является ошибкой сегментации.Я не понимаю, почему.

Входной файл - это subjects.txt, в котором есть студенты и идентификатор, например:

Английский 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 голосов
/ 15 мая 2018

Массив array выходит из этого цикла того же размера, что и при его входе. Затем вы пытаетесь записать после его окончания и получите ошибку сегментации.

Изменить это:

temp = new Subject[size];

к этому:

temp = new Subject[size+1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...