我一直试图解决这个问题但没有成功,我希望有人可以帮我修复它。
我有一个带有A类对象向量的常量类:
class Constants
{
public:
static std::vector<A> currentA;
}
A类有这个构造函数,函数getB()
返回_b:
A::A(std::vector<B>& b)
{
_b=b;
}
,B级是这样的:
class B
{
private:
int Age;
public:
B(const int& age){Age = age;};
int getAge(){return Age;};
void setAge(const int& age){Age=age;}
}
就是这样。如果我像这样向currentA添加一个项目:
std::vector<B> bList;
playerList.push_back(B(5));
Constants::currentA.push_back(bList);
如果执行Constants::currentA.getB().at(0).getAge();
,则返回值5,
但如果你这样做:
Constants::currentA.getB().at(0).setAge(10);
然后:
Constants::currentA.getB().at(0).getAge();
它仍然会返回5.
任何想法??
非常感谢。
答案 0 :(得分:1)
您从_b
按值返回getB()
。
当你setAge()
在本地副本上执行此操作时,会被遗忘。
解决方案是将getB()定义为重新引用向量而不是向量本身。