【发布时间】:2014-11-13 13:10:18
【问题描述】:
基本上我想要复制来调整我的数组大小。函数 next 假设在数组中搜索下一个可用位置。一旦下一个达到 10,这是我希望它调用重复的最大容量。如果在下一个函数中发现数组已满,则基本上调用重复。
问题是,当我将循环设为 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中似乎缺少一些大括号。 -
你尝试了什么,为什么没有成功?
-
我尝试在它之前制作一个 int 让我们说 f,g 但后来我认为这需要输入并且必须在 main 中。然后我尝试了 (bag,size) 但 bag 是一个指针,所以它也不起作用。
-
@jxh 抱歉忘了给你加标签。我尝试了很多东西,但不管它给了我未声明的标识符错误。
-
在 jxh 的评论之后,您在
for循环之后用大括号围绕三个语句进行了编辑,但您应该只执行循环内的第一个赋值语句。delete[] bag;和bag = bagB;只能在复制后进行。更一般地说,代码是一团糟:你不应该有一个“重复”成员函数,它甚至不使用任何成员变量并且不返回新的maxsize... 原样,你必须复制 @ 987654329@Duplicate之外的知识,并希望他们在程序维护/发展期间保持同步。您没有使用std::vector有什么原因吗?
标签: c++ arrays function void-pointers dynamic-allocation