我的类要求我们使用静态转换来向下转换指向派生指针的基本指针。
class Inventory_Item{
//...functions
}
class Product : public Inventory_Item {
//...functions
}
class Inventory_System {
//...functions
private:
Inventory_Item **ptr_inv_item = new Inventory_Item*[512];
item_count = 0;
}
int main(){
Inventory_Item *item;
while(!file.eof){
item = new Product();
Product *product = static_cast <Product*> (item)
//...input information into product pointer
ptr_inv_item[item_count] = product; //store into array of pointers to objects
item_count++;
}
}
我需要使用静态转换,并且我需要使用指向ptr_inv_item数组的对象的指针。当我遍历文件时,我正在创建与派生产品相等的新Inventory_Item基类指针。如果我不每次都创建新项目,则数组基本上会被最新的产品指针覆盖。
那么,我应该如何遍历循环并创建新的产品对象?我现在正在做的事情是内存泄漏 - 对吗?虽然我的程序运行正常,但我的理解是在while循环中,我一遍又一遍地分配内存而不删除它。我尝试在循环结束时删除每个“项目”,但这似乎会导致内存访问错误(可能是因为现在它正在尝试访问我已删除的内存)。
初始化指向对象的指针数组的最佳方法是什么这些对象必须在while循环中使用静态向下转换进行初始化?如何在循环中初始化和删除对象可以避免内存泄漏。