Код#pragma once
#include <iostream>
#include <string>
#include "Class_Date.h"
class Class_ListPerson :public Date
{
public:
Class_ListPerson()
{
name = "";
}
~Class_ListPerson()
{
delete[]list_person;
}
void choose_fun(Class_ListPerson&one)
{
bool check = true;
int choice = 0;
while (check)
{
cout << "Выберите функцию:\n1.Добавить\n2.Показать" << endl;
cin >> choice;
switch (choice)
{
case 1:
add(one);
break;
case 2:
out(one);
break;
case 3:
cout << "Выход" << endl;
check = false;
break;
default:
cout << "Ошибка ввода!" << endl;
break;
}
}
}
void add(Class_ListPerson&one)
{
if (size==0)
{
list_person[size].init(name, date);
size++;
}
else
{
Class_ListPerson* list_person_temp = new Class_ListPerson[size++];
for (int i = 0; i < size; i++)
{
list_person_temp[i] = list_person[i];
}
list_person[size-1].init(name, date);
delete[]list_person;
list_person = list_person_temp;
}
}
void init(string&name,Date &date)
{
cout << "Введите имя: ";
cin >> name;
date.read();
}
void out(Class_ListPerson&one)
{
for (int i = 0; i < size; i++)
{
list_person[i].show_person(name, date);
}
}
void show_person(string& name, Date& date)
{
cout <<"Имя - "<< name << endl;
date.display();
}
private:
string name;
Date date;
int id;
int size=0;
Class_ListPerson* list_person = new Class_ListPerson[size];
};
Добрый вечер! Подскажите в чем проблема.
По заданию нужно создать класс с 2 полями Имя и дата. Так же класс должен содержать массив объектов класса.
Есть 2 вопроса:
1) Правильно ли объявлен массив?
Class_ListPerson* list_person = new Class_ListPerson[size];
//size = 0, т.к. при других значениях ничего не происходит
2) При добавлении элемента массива, после объявлении нового массива размером size+1, в цикле for, где происходит копирование элементов, ломается программа. В отладчике появляется следующая ошибка:
Вызвано исключение по адресу 0x00007FFBF98D163C (vcruntime140d.dll) в 33333.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x0000015E54BD5FF8.