我正在尝试将对象分配给数组位置。该位置由包含数组元素数目的静态变量(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++;
}
我已经尝试将静态变量的值分配给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);
}
谢谢你。
您的问题在调用构造函数时出现
tEntities[TEntity::uEntityCount] = new TEntity((fFuncionesList[iRandFuncList]),...);
它增加uEntityCount
uEntityCount++;
然后将对象指针分配给tEntities [TEntity :: uEntityCount],它将放置在下一个位置,因此,如果当前uEntityCount = 4,它将把指针放置在数组之外的uEntityCount = 5。>