2014-09-19 224 views
1

基本上我想重复调整我的数组。接下来的函数是假设搜索数组中的下一个可用位置。一旦下一个命中10是我希望它调用重复的最大容量。如果在下一个函数中发现数组已满,基本上调用重复。如何从另一个函数调用这个void函数?

问题是,当我得到循环到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; 
} 
+0

'Duplicate'似乎有一些缺失的大括号。 – jxh 2014-09-19 02:34:38

+0

你尝试了什么,为什么它没有工作? – jxh 2014-09-19 02:36:08

+0

我试着让一个int让我们先说f,g然后我认为这需要一个输入,并且必须在main中。然后,我尝试了(包,大小),但包是一个指针,所以不会工作。 – 2014-09-19 02:45:51

回答

0

Duplicate()功能失效它完成复制原始元素后更新maxsize。在它返回之前,它应该将maxsize更新为它为新的bag分配的内容。

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

哇,这是它现在完美的作品谢谢你:O – 2014-09-19 05:04:27

+0

你是非常欢迎。不过,@TonyD首先发现了我从评论中看到的东西。 – jxh 2014-09-19 05:05:36

+0

@TonyD谢谢。 – 2014-09-19 05:12:17

相关问题