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

+0

Что вы пытались, и почему это не сработало? – jxh

+0

Я попытался сделать int, скажем, f, g, но потом я подумал, что это потребует ввода и должно быть в основном. Затем я попробовал (сумка, размер), но мешок - это указатель, так что это тоже не сработает. –

ответ

0

Ваш Duplicate() функции не удается обновить maxsize после того, как будет сделано копирование оригинальных элементов. Прежде чем он вернется, он должен обновить maxsize до того, что он выделил для нового bag.

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

WOW, что он отлично работает сейчас, спасибо вам: O –

+0

Добро пожаловать. Тем не менее @TonyD заметил это, прежде всего, из комментариев. – jxh

+0

@TonyD спасибо. –

Смежные вопросы