我正在为课堂写作模拟,其中一部分涉及生物的繁殖.我的生物被保存在一个阵列中,我需要在它们繁殖时增加阵列的大小.因为我有多个生物的多个类,我使用了一个模板:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,这个模板似乎在某种程度上破坏了我的数据.我可以在没有再现的情况下运行该程序(注释掉对expandarray的调用),但调用此函数会导致程序崩溃.程序在expandarray函数中不会崩溃,但稍后会在访问冲突时崩溃.
我已经编写了数百次扩展数组的函数,而且我不知道这次搞砸了什么.我的功能有什么明显的错误吗?它看起来对你好吗?
编辑:谢谢大家的帮助.我无法相信我错过了一些如此明显的东西.为了回应使用std::vector:我们还没有在课堂上讨论它,而且看起来很傻,我需要使用我们教过的方法编写代码.