2012-02-02 35 views
2

我試圖利用嵌套的QList:嵌套QMAP和QList作不會讓我追加/的push_back

QMap<int, QMap<QString, QList<int> > > teamGames; 
for (int team1 = 1; team1 <= TOTAL_TEAMS; ++team1) { 
    QMap<QString,QList<int>> games; 
    teamGames[team1]=games; 
    QList<int> home; 
    QList<int> away; 

    games["home"] = home; 
    games["away"] = away; 
} 

teamGames.value(1).value("home").push_back(1); 

當我編譯: 1> \ main.cpp中(154):錯誤C2662:'QList :: push_back':無法將'this'指針從'const QList'轉換爲'QList &'

我確定它的一些簡單的東西,我忽略了,或者有一個更簡單的解決方案逃避我。任何幫助不勝感激。

回答

8

正如你所看到的hereQMap::value(const Key & key) const;返回一個const T,這意味着你不能修改你得到的。即使你可以修改拷貝你放入地圖的價值。您需要的是T& QMap::operator[](const Key& key),它返回與密鑰關聯的值作爲可修改參考。於是呼

((teamGames[1])["home"]).push_back(1); 
+2

好吧,也許我回答得太快,但是當你在你的答案,'QMAP ::值()'陳述返回一個const-複製的東西,所以即使是第一次調用你必須以這種方式使用'operator []':'teamGames [1] [「home」]。push_back(1);'。或者我錯了? – azf 2012-02-02 14:57:56

+0

@圖騰恐怕你是對的!我將編輯我的答案。謝謝! – Bill 2012-02-02 15:15:37