我很难弄清楚我到底做错了什么,而且还没有找到任何有相同问题的帖子。我正在使用一个动态字符串数组来保存一个二叉树,根在 [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 是私有(private)成员 arraySize = ((2 * contestants) - 1)
其中 contestants
是参加我的比赛的参赛者人数。树中的每一轮或“行”都与锦标赛分组同义。如果有 n 个参赛者,则树中需要 2n-1 个节点。问题不在于此功能。
getArraySize() { return arraySize; }
最佳答案
原来 elementTypePtr contestList = new elementType[arraySize];
是问题所在。 contestList 是该类的私有(private)成员,然后我将此行放入一个函数中,声明一个同名的局部变量,该变量在函数结束后消失。没什么大不了的,除了我在打印功能中需要它...糟糕。
关于c++ - 输出字符串指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623347/