기본적으로 배열의 크기를 변경하려면 복제본을 원합니다. 다음 함수는 배열에서 다음 사용 가능한 위치를 검색한다고 가정합니다. 한 번 다음에 10을 치면 최대 용량입니다. 중복 전화를 걸고 싶습니다. 다음 함수 내에서 배열이 가득 찬 것으로 판명되면 기본적으로 duplicate를 호출하십시오.이 void 함수를 다른 함수에서 어떻게 호출합니까?
문제는 루프를 10 개의 숫자로 가져올 때 11 번째에 실패합니다. 10 번째 요소가 들어가면, 그것은 duplicate 함수로 간 다음 포인터로 간 다음 배열을 통과하고 루핑을 계속합니다. 따라서 함수를 사용하여 총 요소 수를 볼 때 여전히 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;
}
'중복'에는 빠진 중괄호가있는 것 같습니다. – jxh
당신은 무엇을 시도 했습니까, 왜 효과가 없었습니까? – jxh
int를 만들려고했는데, 그 전에 f를 쓰고 싶었지만 입력이 필요하고 main에 있어야한다고 생각했습니다. 그럼 (가방, 크기)했지만 가방 너무 포인터가 작동하지 않을 것입니다. –