ここで間違っていることを正確に把握するのに問題があり、同じ問題の投稿は見つかりませんでした。私は文字列の動的配列を使用して、バイナリツリーを[0]、最初の行のルート、[1]と[2]などの左から右に保持しています。その出力フォーマットをデバッグしていない間しかし、私は、なぜその特定の行が私のプログラムをクラッシュさせているのか、もっと懸念しています。文字列ポインタ配列を出力する
私はポインタの逆参照問題だと思っていましたが、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