<分区>
我正在编写一个程序,我应该在其中添加和删除租车公司的汽车。 我的代码工作正常,但我应该重载 += 运算符以将汽车添加到动态分配的对象数组中。每次我添加一辆车,数组大小都需要增加一个。我不能使用 vector 。
如果我不进行任何复制,请将动态数组大小设置为一个较大的数字,然后在运算符 += 中执行此操作,例如:
cars[numcars] = obj;
numcars++;
return *this;
代码运行良好,我得到了输出; 但是,如果我尝试:
- 创建新对象数组[size+1]
- 将旧数组复制到新数组;
- 将新对象添加到新数组;
- 删除旧数组;
- 将原数组指针指向新数组;
它不起作用,程序在第一次输入后崩溃。我尝试了很多变体,但我似乎无法弄清楚我要去哪里。 我有两个类,一个是汽车类,一个是 RentACar(我有对象数组)。在 car 类中有 2 个构造函数(其中一个是复制构造函数,运算符 =、== 和 << 被重载并且它们工作正常。
这是我重载 +=
运算符的最新尝试。 numcars
设置为 0
RentACar& operator+=(Automobile &obj){
Automobile *temp = new Automobile[numcars+1];
for (int i = 0; i < numcars+1; i++){
temp[i] = cars[i];
}
numcars++;
temp[numcars] = obj;
delete [] cars;
cars = temp;
return *this;
}
这是main()
for (int i=0;i<n;i++)
{
char marka[100];
int regisracija[5];
int maximumBrzina;
cin>>marka;
for (int i=0;i<5;i++)
cin>>regisracija[i];
cin>>maximumBrzina;
Automobile nov=Automobile(marka,regisracija,maximumBrzina);
//add car
agencija+=nov;
}
该函数预期会使“cars”数组变大一,并在末尾添加新对象。相反,程序在输入 maximumBrzina 后崩溃。