多个呼叫功能

时间:2016-04-28 09:31:13

标签: c++

我需要将数据添加到地图中。我做了这个功能:

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 );

但是当我打电话给它时,它只会添加物品&#34;面包&#34;和#34;可乐&#34;。请问,我必须如何修理它,它会添加所有物品(面包,黄油,啤酒,okey,可乐)?

由于

1 个答案:

答案 0 :(得分:5)

该函数返回*this的副本,每个链接的调用都会创建一个新副本 只有“面包”和“可口可乐”正在修改s

您需要返回*this的引用:

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