无法访问集合中的集合C ++

时间:2013-06-28 13:52:12

标签: c++ stl set

我有一个名为“Store”的类,它有两个类型为“set”的数据字段:“customers”(类型为std :: set)和“albums”(类型为std::set<Album>)。

std::set<Album> albums;
std::set<Customer> customers;

现在,当我尝试将数据保存到其中一个集合时 - 一切正常,但在“Customer”类型中,我有第三个名为orders(类型为std :: set)的集合,当我尝试保存时它的数据(在我离开保存数据的函数之后)就消失了!

这是我如何将数据保存到它:

Customer foundCustomer = *Customer::findID(customers ,id);

Order newOrder = Order();
newOrder.ordNum = ordNum;
newOrder.isPaid = false;

foundCustomer.orders.insert(newOrder);

告诉我你是否需要我发布更多代码。

非常感谢帮助!

1 个答案:

答案 0 :(得分:1)

Customer foundCustomer = *Customer::findID(customers ,id);

此行生成客户的副本。如果要修改他设置的原始客户,则需要使用引用:

Customer& foundCustomer = *Customer::findID(customers ,id);

并确保*Customer::findID(...)也会产生参考。