我在一个类中有一个函数,或多或少像这样:
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
的成员,但是我想知道是否有更好的方法在我做任何一个之前。 最佳答案
将Object* minions[16];
更改为std::vector<Object*> minions;
。这样,您可以使用minions.size()
知道有多少,或者使用minions.push_back(obj);
添加一个而不必担心数组索引的问题。
关于c++ - 如何在类方法中创建即时依赖的静态变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4340792/