我一直在尝试解决该问题,但没有成功,希望有人可以帮助我解决该问题。

我有一个常量类,带有向量类型为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);


如果您执行Constants::currentA.getB().at(0).getAge();,则返回值5,
但如果您这样做:

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


接着:

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


它仍然返回5。

有任何想法吗??

非常感谢你。

最佳答案

您通过_b的值返回getB()

当您setAge()时,您将在本地副本上进行操作,然后将其忘记。

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

关于c++ - C++创建静态 vector 后无法在 vector 中编辑 vector 的项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26205475/

10-11 22:51