使用C ++访问带有静态变量的数组位置

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

我正在尝试将对象分配给数组位置。该位置由包含数组元素数目的静态变量(int)给出。 tEntities的大小为5,而fFuncionesList的大小为4,因此这不是大小问题。

if (TEntity::uEntityCount < 5)
        {
            iRandFuncList = rand() % (3 + 1);
            iRandPosX = rand() % (120 + 1);
            iRandPosY = rand() % (30 + 1);
            tEntities[TEntity::uEntityCount] = new TEntity((fFuncionesList[iRandFuncList]), iRandPosX, iRandPosY);
        }

TEntity(funcEntity *funcs, int x, int y)
    {
        m_ix = x;
        m_iy = y;
        m_funcs = funcs;
        uEntityCount++;
    }

ErrorDebuger

我已经尝试将静态变量的值分配给int变量,并且它可以工作,我想了解为什么它不能与静态变量一起工作。

if (TEntity::uEntityCount < 5)
            {
                iRandFuncList = rand() % (3 + 1);
                iRandPosX = rand() % (120 + 1);
                iRandPosY = rand() % (30 + 1);
                int pos = TEntity::uEntityCount;
                tEntities[pos] = new TEntity((fFuncionesList[iRandFuncList]), iRandPosX, iRandPosY);
            }

谢谢你。

c++ arrays visual-studio static
1个回答
0
投票

您的问题在调用构造函数时出现

tEntities[TEntity::uEntityCount] = new TEntity((fFuncionesList[iRandFuncList]),...);

它增加uEntityCount

uEntityCount++;

然后将对象指针分配给tEntities [TEntity :: uEntityCount],它将放置在下一个位置,因此,如果当前uEntityCount = 4,它将把指针放置在数组之外的uEntityCount = 5。>

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