所以这是我的功能。
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。
答案 0 :(得分:0)
这里有一些问题。其中一个是你怀疑的,你不能delete
静态定义的东西。通过使用静态定义和初始化函数来执行动态分配并复制静态数据,可以解决这个问题。
另一个问题是您在temp
变量上使用按值调用。这可能不那么明显,因为你知道,你可以修改数据temp
指向 - 问题是你也想要执行temp = tempStruct;
,大概你想要影响调用者传入的值的视图...如果你想影响调用者看到的内容,你需要通过引用调用。