0

「Store」という名前のクラスがあり、「set」型の2つのデータフィールドがあります:「customers」(std::set型)と「albums」(型std::set<Album>)。

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

ここで、これらのセットの 1 つにデータを保存しようとすると、すべて正常に動作しますが、タイプ「Customer」には、orders という名前の 3 番目のセット (タイプ std::set ) があり、それにデータを保存しようとすると、 (そして、データを保存する機能を終了すると)消えます!

データを保存する方法は次のとおりです。

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

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

foundCustomer.orders.insert(newOrder);

さらにコードを投稿する必要があるかどうか教えてください。

助けていただければ幸いです!

4

1 に答える 1

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

この行は顧客のコピーを作成します。セット内の元の顧客を変更する場合は、参照を使用する必要があります。

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

*Customer::findID(...)また、その結果が参照にもなることを確認してください。

于 2013-06-28T13:55:20.393 に答える