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

时间:2014-09-19 02:27:27

标签: c++ arrays function void-pointers dynamic-allocation

基本上我想要复制来重新调整我的数组。接下来的函数是搜索数组中的下一个可用位置。一旦下一次命中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;
}

1 个答案:

答案 0 :(得分:0)

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

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