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

C++ Cannot edit items of a vector inside a static vector after creating it

本文关键字:向量 编辑 内部 C++ 创建 静态      更新时间:2023-10-16

我一直试图解决这个问题,但没有成功,我希望有人能帮助我解决它。

我有一个类Constants,它有一个a类对象的向量:

class Constants
{
public:
    static std::vector<A> currentA;
}

类A有这个构造函数和返回_b:的函数getB()

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);

如果执行CCD_ 2,则返回值5,但如果你这样做:

 Constants::currentA.getB().at(0).setAge(10);

然后:

Constants::currentA.getB().at(0).getAge();

它仍然返回5。

有什么想法吗??

非常感谢。

根据getB()的值返回_b

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

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