gpt4 book ai didi

c++ - 如何从另一个函数调用此 void 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:03 26 4
gpt4 key购买 nike

基本上我想要复制来调整我的数组大小。 next 函数假设搜索数组中的下一个可用位置。一旦下一次达到 10,这是我希望它调用重复的最大容量。如果在下一个函数中发现数组已满,则基本上调用 duplicate。

问题是,当我循环到 10 个数字时,它在 11 号失败了。第 10 个元素进入后,它进入复制函数,然后进入指针,然后通过数组,然后它一直循环,所以当我使用我的函数查看元素总数时,它仍然显示 10 ,这意味着 maxsize 没有改变。我不明白为什么?

void ProgramOne<Type>::Next(Type & y)
{
if (!IsFull())
{
if (count < maxsize)
{
bag[count] = y;
count++;
}
}
else
{
Duplicate();
}
}

我正在尝试调用它

void ProgramOne<Type>::Duplicate()
{
int *bagB = new int[maxsize * 2];
for (int i = 0; i < maxsize; i++)
{
bagB[i] = bag[i];
}
delete[] bag;
bag = bagB;
}

最佳答案

您的 Duplicate() 函数在复制原始元素后无法更新 maxsize。在它返回之前,它应该将 maxsize 更新为它为新的 bag 分配的值。

        delete[] bag;
bag = bagB;
maxsize *= 2;

关于c++ - 如何从另一个函数调用此 void 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com