У меня есть функция в классе, более или менее работает так:
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
напрямую, но я хочу знать, есть ли лучший задолго до того, как я это сделаю.