여기 내가 잘못하고있는 것을 정확히 알아내는 데 어려움이 있으며 동일한 문제가있는 게시물을 찾지 못했습니다. [1]과 [2] 등에서 [0], 첫 번째 행의 왼쪽, 오른쪽에서 이진 트리를 유지하기 위해 문자열의 동적 배열을 사용하고 있습니다. 출력 형식을 디버깅하지는 않았지만 그러나, 나는 왜 그 특정한 노선이 나의 프로그램을 부수고 있는지에 관해서는 훨씬 더 걱정하고있다.문자열 포인터 배열 출력
포인터를 참조 해제하는 문제라고 생각했지만 outStream << &contestList[i]
은 예상대로 주소를 인쇄하고, outStream << *contestList[i]
은 예상대로 오류가 발생합니다.
//3 lines are from other functions/files
typedef string elementType;
typedef elementType* elementTypePtr;
elementTypePtr contestList = new elementType[arraySize];
void BinTreeTourneyArray::printDownward(ostream &outStream)
{
int row = 1;
for (int i = 0; i < getArraySize(); i++)
{
outStream << contestList[i]; //this is crashing the program
if (isPowerOfTwo(i))
{
outStream << endl;
row++;
}
else
{
outStream << ":";
}
}
}
arraySize는 contestants
내 대회에서 참가자의 수는 개인 회원 arraySize = ((2 * contestants) - 1)
입니다. 트리의 각 라운드 또는 "행"은 토너먼트 대괄호와 동의어입니다. n 명의 참가자가있는 경우 트리에 2n-1 개의 노드가 필요합니다. 이 문제는이 기능과 관련이 없습니다.
getArraySize() { return arraySize; }
'arraySize' 및'getArraySize'에 대한 코드 표시 – pepperjack
_ "문자열 포인터 배열"_ Shudder! 코드에 _arrays_ 또는 _pointers_를 사용하는 간결한 이유는 무엇입니까? 제발 이것들에 대해 자세히 설명해 주시겠습니까? – user0042
@pepperjack이 추가되었습니다. – ViscousRandom