2016-04-28 76 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