输出字符串指针数组

时间:2017-12-03 21:10:26

标签: c++ string dynamic-arrays

我在确定我在这里做错了什么时遇到了一些麻烦,并且没有发现任何有相同问题的帖子。我正在使用一个动态的字符串数组来保存一个二进制树,其根位于[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是私人会员arraySize = ((2 * contestants) - 1),其中contestants是我锦标赛中参赛者的数量。树中的每一轮或“行”与锦标赛括号同义。如果有n个参赛者,那么树中需要2n-1个节点。问题不在于此功能。

getArraySize() { return arraySize; }

1 个答案:

答案 0 :(得分:1)

原来elementTypePtr contestList = new elementType[arraySize];就是问题所在。 contestList是该类的私有成员,然后我将此行放在一个函数中,声明一个同名的局部变量,该函数在函数结束后消失。没什么大不了的,除了我在打印功能中需要它...哎呀。