gpt4 book ai didi

c++ - 如何从类外修改 vector

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:40 25 4
gpt4 key购买 nike

我怎样才能在类外访问私有(private) vector ?我想修改这个对象的参数。

我尝试创建 getter 并通过引用返回 vector ,但是当我尝试更改主函数中包含在 vector 中的对象的参数时, vector 中的更改未保存。

class Restaurant
{
std::vector <Waiter> waiters_vector_;

public:
inline std::vector<Waiter> &GetWaitersVector() { return waiters_vector_; }

void Restaurant::AddWaiter(Waiter tmp)
{
waiters_vector_.push_back(tmp);
}
Restaurant();
~Restaurant();
};


class Waiter
{
int current_group_id_=0;
public:
int GetCurrentGroupId()
{
return current_group_id_;
}

void SetCurrentGroupId(int tmp)

{
current_group_id_ = tmp;
}

Waiter();
~Waiter();
};


int main()
{

Restaurant restaurant1;
Waiter w1, w2, w3;
restaurant1.AddWaiter(w1);
restaurant1.AddWaiter(w2);
restaurant1.AddWaiter(w3);

for (Waiter element : restaurant1.GetWaitersVector())
{
element.SetCurrentGroupId(123);
}

for (Waiter element : restaurant1.GetWaitersVector())
{
std::cout << element.GetCurrentGroupId() << std::endl;
}

}

结果:000

最佳答案

你的两个 for 循环都在复制

for (Waiter element : restaurant1.GetWaitersVector())

你想修改对实际对象的引用

for (Waiter& element : restaurant1.GetWaitersVector())

关于c++ - 如何从类外修改 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55666021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com