我在一个类中有一个函数,或多或少像这样工作:
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"));
o1
playerone.minions[0]
正如预期的那样,位于 中,但是,位于o2
中playerthree.minions[1]
的Summon()
函数使用相同的i
变量。有没有办法让函数对单个实例Summon()
使用静态变量,但对每个实例使用单独的变量?我知道我可以做一个循环到等于的第一个点,或者直接做一个成员,但我想知道在我做这些之前是否有更好的方法。i
i
for
minions[]
NULL
i
Player