Reshef
Reshef

Reputation: 1

add a object to a array in my class

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?

Upvotes: 0

Views: 16

Answers (1)

Some programmer dude
Some programmer dude

Reputation: 409166

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

Upvotes: 1

Related Questions