0

I want to add an object (from a different class) to an array in my class. When I try to do that I get this

error: 0xC0000005: Access violation writing location 0x0000000000000000

I create the object (to be added) in the main function and I use the push method in the main function to add this object to my Parking_Lot class.

My code:

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;
}

where the car is the object I want to add and the Lot is the array in my class that I want to add the object to.

The constructor of my class:

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

What am i doing wrong here and how can I fix it?

1 Answer 1

1

The problem is in your constructor:

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

You define a new and separate variable Lot inside the constructor. It will not be related to any possible member variable you might have with the same name.

You need to initialize the member variable instead:

Parking_Lot::Parking_Lot(int s)
{
    Lot = new Cars[s+1];
    size = s;
    front = 0;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.