我需要你的帮助。 我正在为停车场编写代码(这是我大学的课程作业),而且我的一个Parking_Lot课程方法有问题,我需要你的帮助。
我有2个类: 汽车类保存汽车对象,我传递给Parking_Lot类。它在构造函数中获得以下数据:汽车模型(带有char数组)和汽车ID(带有静态int),必须介于1000到9999之间(每辆汽车都有一个唯一的ID号)。 Parking_Lot包含所有汽车对象的类。它在构造函数中获得以下数据:停车场大小(带有int号)。停车场类基于堆栈数据类型。它有一个类型为Cars的指针数组,它(在push方法中)获得指向car对象的指针。
我的任务中的一个要求是我将创建一个测试函数(在main函数中使用它)来测试Parking_Lot类和Cars类。
这是测试功能:
void test2()
{
int size, CarNum = 0;
cout << "Please enter the parking lot size: ";
cin >> size;
cout << "Please enter the Number of Cars to run on: ";
cin >> CarNum;
cout << "Parking size: " << size << endl;
Parking_Lot MainLot(size);
for (int i = 0; i < CarNum; i++)
{
int ID = GetCarID();
if (ID != 0)
{
Cars* car = new Cars(GetCarModle(), ID);
MainLot.push(car, 8, 10);
delete car;
}
}
MainLot.DispStaying();
}
和推送方法:
bool Parking_Lot::push(Cars *car,int ent_time_hour, int ent_time_min)
{
cout.copyfmt(init);
if (is_full())
{
m_stayed_out++;
return false;
}
car->set_ent_time(ent_time_hour, ent_time_min);
cout << setw(11) << left << "Entered:" << *car << "at " << setfill('0') << setw(2) << right << car->get_ent_time(false) << ":" << setfill('0') << setw(2) << right << car->get_ent_time(true) << endl;
m_Lot[++m_front] = car;
car->set_parking(true);
cout.copyfmt(init);
return true;
}
我的问题在于MainLot.DispStaying()函数。 我意识到,如果我删除for循环中的汽车指针我不能用它来显示DispStaying()函数中的汽车对象,但for循环是在要求的分配中,所以我不能通过推送方法有不同的价值并解决问题。
你能帮帮我,告诉我如何使用DispStaying()方法吗?
DispStaying()方法(在Parking_Lot类中):
void Parking_Lot::DispStaying(void) const
{
cout << "day summery:" << endl;
cout << m_stayed_out << " cars didnt have space" << endl;
printf("The following cars are staying in the parking lot for the night:\n");
for (int index = 0; index <= m_front; index++)
{
printf("%-11s%-11d\n", m_Lot[index]->get_model(), m_Lot[index]->get_ID());
}
}
感谢您的帮助, 瑞舍夫