使用静态向下转换初始化一个指向对象的指针数组?

时间:2016-10-26 03:51:58

标签: c++ loops downcast static-cast

我的类要求我们使用静态转换来向下转换指向派生指针的基本指针。

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循环中使用静态向下转换进行初始化?如何在循环中初始化和删除对象可以避免内存泄漏。

0 个答案:

没有答案