什么产品没有添加到产品列表中?(supermarket.cpp)

时间:2016-06-15 17:06:52

标签: c++

我只能更改需要实现的功能。产品没有被添加到列表中,为什么? (另请查看产品功能的读/显示列表)(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;
  }

1 个答案:

答案 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:抱歉我的英语不好