我只能更改需要实现的功能。产品没有被添加到列表中,为什么? (另请查看产品功能的读/显示列表)(supermarket.cpp)
该产品是另一类具有可变数量,价格等的类别。 超市系统维护管理员添加产品和阅读产品的产品列表。
在supermarket.cpp
{
Add_new_product_in_productlist(p3); //p3 is product type object
list<Product> Plist=GetProduct_list(); //Return the prolist from supermarket
Write_product_in_supermarket_system(Plist);
Read_products_from_supermarket_system();
void Supermarket::Write_product_in_supermarket_system(list
}
list <Product> product_list)
{
SetProduct_list(product_list);
cout <<"StProduct Count in ADD_new"<<GetTotalProductsCount()<<endl;
}
//Read display the product from product list
list<Product> Supermarket::Read_products_from_supermarket_system()
{
list<Product> Productlist = GetProduct_list();
list<Product>:: iterator iterator;
for(iterator = Productlist.begin();
iterator != Productlist.end();++iterator) {
iterator->Display_Product();
cout <<"I am here"<<endl;
return Productlist;
}
答案 0 :(得分:2)
我怀疑问题来自这两种方法的组合
list<Product> Supermarket::GetProduct_list()
{return Product_list;}
void Supermarket::Add_new_product_in_productlist(Product P)
{
//Need to Implement
list<Product>& Product_list = GetProduct_list();
Product_list.push_back(P);
cout <<"GetProduct Count in ADD_new"<<GetTotalProductsCount()<<endl;
}
GetProduct_list()
返回成员Product_list
的副本,因此在您定义时
list<Product>& Product_list = GetProduct_list();
您获得对该成员的副本的引用;添加产品时
Product_list.push_back(P);
您在成员的副本中添加产品,而不是在成员中。从Add_new_product_in_productlist()
我想你可以简单地避免使用GetProduct_list()
void Supermarket::Add_new_product_in_productlist(Product P)
{
Product_list.push_back(P);
cout <<"GetProduct Count in ADD_new"<<GetTotalProductsCount()<<endl;
}
但是,如果您希望以这种方式使用GetProduct_list()
,则应该返回对Product_list
的引用,所以
list<Product> & Supermarket::GetProduct_list()
{ return Product_list; }
p.s:抱歉我的英语不好