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

gol*_*log 2 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);
Run Code Online (Sandbox Code Playgroud)

当我编译时我得到:1>.\ main.cpp(154):错误C2662:'QList :: push_back':无法将'this'指针从'const QList'转换为'QList&'

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

Bil*_*ill 9

正如您在此处 看到的那样,QMap::value(const Key & key) const;返回a const T,这意味着您无法修改所获得的内容.即使你可以修改你放入地图的值的副本.你需要的是T&QMap :: operator [](const Key&key),它返回与键相关的值作为可修改的引用.所以打电话

((teamGames[1])["home"]).push_back(1);
Run Code Online (Sandbox Code Playgroud)

  • 好吧,也许我回答太快,但正如你在答案中所说,`QMap :: value()`返回一个const-copy-thing,所以即使是第一次调用你也必须使用`operator []`这个方式:`teamGames [1] ["home"].push_back(1);`.还是我错了? (2认同)