2014-09-19 180 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

相關問題