多重调用功能

Multiple calling function

本文关键字:功能 调用      更新时间:2023-10-16

我需要将数据添加到我的映射中。我做了这个功能:

CSupermarket CSupermarket::Store( string name, CDate x, int count ) {
  pair <CDate, int> p;
  p = make_pair ( x, count );
  vector<pair<CDate, int >>::iterator it;
  vector<pair<CDate, int > > v;
  if ( items[name].size() ) {
    v = items[name];
  }
  it = lower_bound (v.begin(), v.end(), p );
  v.insert( it, p );
  items[name] = v;
  return * this;
}

我不得不这样称呼它:

CSupermarket s;
s . Store ( "bread", CDate ( 2016, 4, 30 ), 100 ) .
        Store ( "butter", CDate ( 2016, 5, 10 ), 10 ) .
        Store ( "beer", CDate ( 2016, 8, 10 ), 50 ) .
        Store ( "bread", CDate ( 2016, 4, 25 ), 100 ) .
        Store ( "okey", CDate ( 2016, 7, 18 ), 5 );
s . Store ( "Coke", CDate ( 2016, 12, 31 ), 10 );

但当我称之为"面包"answers"可乐"时,它只添加了一些项目。请问,我必须如何修复它,它会添加所有项目(面包、黄油、啤酒、OK、可乐)?

感谢

函数返回*this的一个副本,每个链式调用都创建一个新副本
只有"面包"answers"可乐"在修改s

您需要返回对*this:的引用

CSupermarket & CSupermarket::Store( string name, CDate x, int count ) 
             ^
          reference