我正在尝试在结构中动态创建一个数组

时间:2014-01-12 12:14:17

标签: c++ arrays struct delete-operator

所以这是我的功能。

void Array::addValueStruct(int id, int size, int type, int compareValue, StoredData temp[])
{
    //struct
    StoredData* tempStruct = new StoredData [arrSize+1];
    for (int i=0;i<arrSize;i++)
    {
        tempStruct[i] = temp[i];
    }

    arrSize = arrSize + 1;

    delete [] temp;

    temp = tempStruct;

    temp[arrSize-1]={id,size,type,compareValue};
}

这是我初始化我的结构

的地方
StoredData testData[5]={{0,50,5,1},{1,25,5,2},{2,40,2,3},{3,10,5,4},{4,80,3,5}};

现在,我大约20%确定它不起作用的原因是因为我需要使用NEW函数来创建数据,但我正在尝试搜索网络而我找不到任何东西帮助我。

我想要发生的是,我想通过函数传递struct数组以将其大小增加1。

1 个答案:

答案 0 :(得分:0)

这里有一些问题。其中一个是你怀疑的,你不能delete静态定义的东西。通过使用静态定义和初始化函数来执行动态分配并复制静态数据,可以解决这个问题。

另一个问题是您在temp变量上使用按值调用。这可能不那么明显,因为你知道,你可以修改数据temp指向 - 问题是你也想要执行temp = tempStruct;,大概你想要影响调用者传入的值的视图...如果你想影响调用者看到的内容,你需要通过引用调用。