C ++创建后无法在静态向量内编辑向量的项目

时间:2014-10-05 17:49:04

标签: c++ object vector

我一直试图解决这个问题但没有成功,我希望有人可以帮我修复它。

我有一个带有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.

任何想法??

非常感谢。

1 个答案:

答案 0 :(得分:1)

您从_b按值返回getB()

当你setAge()在本地副本上执行此操作时,会被遗忘。

解决方案是将getB()定义为重新引用向量而不是向量本身。