我得到了这个例子
家长班Vehicle
子类Car
, Motorcycle
, &Lorry
这就是发生的事情:在main.cpp
我创造
VehicleTwoD *vehicletwod[100];
Car *myCar = new Car();
Motorcycle *myMotorcycle = new motorCycle();
Lorry *myLorry = new Lorry();
这就是我所做的:
if(selection=="Car")
{
vehicletwod[arrayCounter] = myCar;
vehicletwod[arrayCounter]->setName(theName);
vehicletwod[arrayCounter]->setYear(theYear);
}
if(selection=="Lorry")
{
vehicletwod[arrayCounter] = myLorry;
vehicletwod[arrayCounter]->setName(theName);
vehicletwod[arrayCounter]->setYear(theYear);
}
if(selection=="Motorcycle")
{
vehicletwod[arrayCounter] = myMotorcycle ;
vehicletwod[arrayCounter]->setName(theName);
vehicletwod[arrayCounter]->setYear(theYear);
}
cout << "Record successfully stored. Going back to the main menu " << endl;
这里的问题main.cpp
是某种switch-case
带有提示的菜单,因此如果用户选择插入新车辆,他会选择车辆类型,并手动输入一些值,例如theName
和theYear
。然后它将被设置为vehicletwod[arrayCounter]
.
当vehicletwod
.
如果用户做了类似的事情
Car
Motorcycle
Car
第 1 辆车的值将被最新Car
的(第 2 辆车)覆盖
但是,如果他们输入
Car
Motorcycle
Lorry
这很好,因为每个对象只运行一次。
如何更改我的声明,使其不会覆盖之前同一个子类的数据。