嵌套的QMap和QList不允许我追加/ push_back

时间:2012-02-02 04:17:44

标签: qt qlist qmap

我正在尝试使用嵌套的QList:

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&gt;。\ main.cpp(154):错误C2662:'QList :: push_back':无法将'this'指针从'const QList'转换为'QList&amp;'

我确信它很简单,我忽略了,或者可能有一个更简单的解决方案让我望而却步。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:8)

正如您所看到的,here QMap::value(const Key & key) const;会返回const T,这意味着您无法修改所获得的内容。即使你可以修改你放入地图的值的副本。您需要的是T& QMap::operator[](const Key& key),它返回与键关联的值作为可修改的引用。所以请致电

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