我有一个 struct Creature 和一个 struct Game。Game是Creature的“朋友”。在游戏中我有矢量生物;我通过一个名为 addC 的函数向该向量添加了一个生物 x
void addc (Creature& c){
creatures.push_back(c);
}
现在我在另一个函数“foo”中,它是 struct Game 的公共方法。
void foo (Creature& c){
...
}
在该函数中,我需要从与来自生物 c 的某些信息相匹配的矢量生物中找到另一个生物。所以我在 Game 中创建了另一个名为 fooHelper 的公共方法
void fooHelper (char s, int x, int y){
bool found = false;
for (int i = 0; i < creatures.size() && (!found); ++i){
Creature& c = creatures[i];
if (x == c.x && y == c.y){
c.s = s;
found = true;
}
}
}
但是,当我检查第二个生物的“s”成员是否正在更新时,事实证明不是!我不明白我做错了什么,因为我是通过引用向量来推动的。我从向量中通过引用来获取生物。
游戏中的矢量看起来像这样
struct Game{
private:
vector<Creature> creatures;
...
}
struct Creature{
private:
char s;
int x; int y;
...
}
任何帮助将非常感激!