将对象添加到我的班级

时间:2018-05-17 09:05:48

标签: oop visual-c++ visual-studio-2015

我想在我的班级中将object(来自不同的班级)添加到array。 当我尝试这样做时,我得到了这个

  

错误:0xC0000005:访问冲突写入位置   0x0000000000000000

我在main函数中创建了对象(待添加),并使用main函数中的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 :(得分:1)

问题出在你的构造函数中:

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

在构造函数中定义 new 单独的变量Lot。它与您可能具有相同名称的任何可能的成员变量相关。

您需要初始化成员变量:

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