我一直在尝试解决该问题,但没有成功,希望有人可以帮助我解决该问题。
我有一个常量类,带有向量类型为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/