gpt4 book ai didi

c++ - 如何在类方法中创建即时相关的静态变量?

转载 作者:行者123 更新时间:2023-11-28 01:09:14 25 4
gpt4 key购买 nike

我在类中有一个函数或多或少是这样工作的:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com