我正在为班级写一个模拟,其中一部分涉及生物的繁殖。我的生物体保存在一个数组中,当它们繁殖时我需要增加数组的大小。因为我有多个生物体的多个类,所以我使用了一个模板:
template <class orgType>
void expandarray(orgType* oldarray, int& numitems, int reproductioncount)
{
orgType *newarray = new orgType[numitems+reproductioncount];
for (int i=0; i<numitems; i++) {
newarray[i] = oldarray[i];
}
numitems += reproductioncount;
delete[] oldarray;
oldarray = newarray;
newarray = NULL;
}
但是,这个模板似乎以某种方式破坏了我的数据。我可以在不复制的情况下正常运行程序(注释掉对 expandarray 的调用),但是调用这个函数会导致我的程序崩溃。该程序在 expandarray 函数期间不会崩溃,但稍后会在访问冲突时崩溃。
我已经编写了数百次扩展数组的函数,但我不知道这次我搞砸了什么。我的功能有什么明显的错误吗?你觉得合适吗?
编辑:感谢大家的帮助。我不敢相信我错过了这么明显的东西。作为回应 using std::vector
: 我们还没有在课堂上讨论过,虽然看起来很愚蠢,但我需要使用我们学过的方法编写代码。