我有将对象添加到对象指针数组的问题。这是我将要谈论的一个功能:
void add(Car **cars, int number) {
Car *fresh = new Car;
fresh = new Car;
cout << "Enter the name of your car." << endl;
cin >> fresh->name;
cout << "Enter max velocity of your car." << endl;
cin >> fresh->maxV;
cout << "Enter weight of your car." << endl;
cin >> fresh->weight;
delete[number-1] cars;
cars[number-1] = fresh; // here's something wrong
}
我在指针数组number
中分配了**cars
个汽车的内存,然后我尝试在数组末尾添加新对象fresh
,首先删除最后一个索引中的内存对象的指针数组,然后传递引用到数组的最后一个索引,但是我得到一个错误。我试图自己解决问题,因为我没有在网上找到类似的话题。我希望有人能指导我如何解决它。谢谢你的帮助。
答案 0 :(得分:0)
无需删除声明。如果您已经为“汽车”分配了内存,那么代码将是这样的。
Car *fresh = new Car;
cars[number-1] = fresh; //number here should be index starting from 1 not number of Car objects
在调用方法add()之前,汽车会像下面这样初始化。
Car ** cars = new (Car *)[number];
答案 1 :(得分:0)
如果您需要删除cars[number-1]
使用
delete cars[number-1];
否则,您无需再次拨打new
来分配fresh
。
所以,以下应该有效
void add(Car **cars, int number) {
Car *fresh = new Car;
cout << "Enter the name of your car." << endl;
cin >> fresh->name;
delete cars[number-1];
cars[number-1] = fresh;
}
并且您需要确保number
是您的汽车数组的大小。
答案 2 :(得分:-1)
如果你使用
可能会更好std::vector<Car> cars;
所以你可以做下一个:
cars.push_back(fresh);
就是这样。抱歉我的英文