добавить объект в массив в моем классе - PullRequest
0 голосов
/ 17 мая 2018

Я хочу добавить object (из другого класса) к array в моем классе. Когда я пытаюсь сделать это, я получаю это

ошибка: 0xC0000005: место записи нарушения прав доступа 0x0000000000000000

Я создаю объект (будет добавлен) в главной функции и использую метод push в главной функции, чтобы добавить этот объект в мой Parking_Lot класс.

Мой код:

void Parking_Lot::push(Cars const &car)
{
    time_t t = time(NULL);
    struct tm Today = *localtime(&t);
    if (is_full())
    {
        printf("Parking lot is full!!\n");
        return;
    }
    if (Today.tm_hour < OpeningT.tm_hour && Today.tm_hour > ClosingT.tm_hour)
    {
        printf("Parking lot is now closed!!\n");
        printf("Opening time: from %02d:%02d to %02d:%02d\n", OpeningT.tm_hour, OpeningT.tm_min, ClosingT.tm_hour, ClosingT.tm_min);
    }
    else if (Today.tm_hour == OpeningT.tm_hour || Today.tm_hour == ClosingT.tm_hour)
    {
        if(Today.tm_min > OpeningT.tm_min || Today.tm_min < ClosingT.tm_min) Lot[front++] = car;
        else
        {
            printf("Parking lot is now closed!!\n");
            printf("Opening time: from %02d:%02d to %02d:%02d\n", OpeningT.tm_hour, OpeningT.tm_min, ClosingT.tm_hour, ClosingT.tm_min);
        }
    }
    else if(Today.tm_hour > OpeningT.tm_hour && Today.tm_hour < ClosingT.tm_hour) Lot[front++] = car;
}

где car - это объект, который я хочу добавить, а Lot - это массив в моем классе, в который я хочу добавить объект.

Конструктор моего класса:

Parking_Lot::Parking_Lot(int s)
{
    Cars* Lot = new Cars[s+1];
    size = s;
    front = 0;
}

Что я здесь не так делаю и как я могу это исправить?

1 Ответ

0 голосов
/ 17 мая 2018

Проблема в вашем конструкторе:

Parking_Lot::Parking_Lot(int s)
{
    Cars* Lot = new Cars[s+1];
    size = s;
    front = 0;
}

Вы определяете новые и отдельные переменные Lot внутри конструктора. не будет связано с любой возможной переменной-членом, которая может иметь такое же имя.

Вместо этого вам нужно инициализировать переменную-член:

Parking_Lot::Parking_Lot(int s)
{
    Lot = new Cars[s+1];
    size = s;
    front = 0;
}
...