输出字符串指针数组

问题描述 投票:1回答:1

我在确定我在这里做错了什么时遇到了一些麻烦,并且没有发现任何有相同问题的帖子。我正在使用一个动态的字符串数组来保存一个二进制树,其根位于[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; }
c++ string dynamic-arrays
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.