2016-04-28 77 views
1

我需要将数据添加到我的地图。我做了这个功能:多个通话功能

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

但是,当我把这个,它仅增加了项目“面包”和“可乐”。请问,我该如何解决它,它会添加所有物品(面包,黄油,啤酒,okey,可乐)?

感谢

+2

您需要通过引用从排序函数返回CSupermarket。 – TheFooBarWay

回答

5

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

你需要一个参考返回*this

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