C++ 如何从另一个函数调用这个void函数?
基本上,我想重复调整我的数组大小。假设函数next搜索数组中的下一个可用位置。一旦下一个点击10,这是最大容量,我希望它调用重复。如果在下一个函数中发现数组已满,则基本上调用duplicate 问题是,当我将循环设置为10个数字时,它在11号失败。在第10个元素进入后,它进入复制函数,然后指向指针,然后穿过数组,然后它一直循环,所以当我使用函数查看元素总数时,它仍然显示为10,这意味着C++ 如何从另一个函数调用这个void函数?,c++,arrays,function,void-pointers,dynamic-allocation,C++,Arrays,Function,Void Pointers,Dynamic Allocation,基本上,我想重复调整我的数组大小。假设函数next搜索数组中的下一个可用位置。一旦下一个点击10,这是最大容量,我希望它调用重复。如果在下一个函数中发现数组已满,则基本上调用duplicate 问题是,当我将循环设置为10个数字时,它在11号失败。在第10个元素进入后,它进入复制函数,然后指向指针,然后穿过数组,然后它一直循环,所以当我使用函数查看元素总数时,它仍然显示为10,这意味着maxsize没有改变。我不明白为什么 void ProgramOne<Type>::Next(Ty
maxsize
没有改变。我不明白为什么
void ProgramOne<Type>::Next(Type & y)
{
if (!IsFull())
{
if (count < maxsize)
{
bag[count] = y;
count++;
}
}
else
{
Duplicate();
}
}
void ProgramOne::Next(类型&y)
{
如果(!IsFull())
{
如果(计数<最大值)
{
行李[计数]=y;
计数++;
}
}
其他的
{
重复();
}
}
我想把这个叫做
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;
}
void ProgramOne::Duplicate()
{
int*bagB=新int[maxsize*2];
对于(int i=0;i
复制原始元素后,您的Duplicate()
函数无法更新maxsize
。在返回之前,它应该将maxsize
更新为它为新行李分配的内容
delete[] bag;
bag = bagB;
maxsize *= 2;
Duplicate
中似乎缺少一些大括号。您尝试了什么,为什么不起作用?我尝试在它之前生成一个int,比如f,g,但后来我认为这需要一个输入,并且必须在main中。然后我尝试了(袋子,大小),但袋子是一个指针,所以不起作用。@jxh抱歉,忘了标记你了。我尝试了很多方法,但不管怎样,它都会给我一个未声明的标识符错误。在jxh的注释之后,您在for
循环后的三条语句周围用大括号进行了编辑,但是您应该只在循环内执行第一条赋值语句<代码>删除[]包代码>和行李=行李袋代码>只能在复制后执行。更一般地说,代码很混乱:您不应该有一个“复制”成员函数,它甚至不使用任何成员变量,也不返回新的maxsize
。。。按原样,您必须复制*2
以外的知识复制
,并希望它们在程序维护/演化过程中保持同步。您不使用std::vector有什么原因吗?非常欢迎@不过,我从评论中看到TonyD首先发现了这一点。