我在一个类中有一个函数,或多或少像这样工作:
class Player {
private:
Object* minions[16]
public:
void Summon(Object* obj);
};
Player::Summon(Object* obj) {
static int i = 0;
if (i == 16)
return;
minions[i] = obj;
i++;
}
尝试使用多个播放器时会出现问题,如下所示:
Player playerone;
Player playerthree;
playerone.Summon(new Object("o1"));
playerthree.Summon(new Object("o2"));
o1playerone.minions[0]正如预期的那样,位于 中,但是,位于o2中playerthree.minions[1]的Summon()函数使用相同的i变量。有没有办法让函数对单个实例Summon()使用静态变量,但对每个实例使用单独的变量?我知道我可以做一个循环到等于的第一个点,或者直接做一个成员,但我想知道在我做这些之前是否有更好的方法。iiforminions[]NULLiPlayer