【问题标题】:Nested QMap and QList won't let me append/push_back嵌套的 QMap 和 QList 不会让我追加/push_back
【发布时间】:2012-02-24 19:10:54
【问题描述】:

我正在尝试使用嵌套的 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>.\main.cpp(154) : 错误 C2662: 'QList::push_back' : 无法将 'this' 指针从 'const QList' 转换为 'QList &'

我确定我忽略了一些简单的事情,或者可能有一个更简单的解决方案让我无法理解。非常感谢任何帮助。

【问题讨论】:

    标签: qt qlist qmap


    【解决方案1】:

    如你所见hereQMap::value(const Key &amp; key) const; 返回一个const T,这意味着你不能修改你得到的。即使您可以修改您放入地图的值的副本。您需要的是T& QMap::operator[](const Key& key),它返回与键关联的值作为可修改的参考。所以调用

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

    【讨论】:

    • 好吧,也许我回答得太快了,但正如你在回答中所说,QMap::value() 返回一个 const-copy-thing,所以即使是第一次通话,你也必须使用 operator []这样:teamGames[1]["home"].push_back(1) ;。还是我错了?
    • @totem 恐怕你是对的!我要编辑我的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2016-07-20
    • 2019-10-07
    • 1970-01-01
    • 2012-10-23
    • 2013-02-11
    • 1970-01-01
    相关资源
    最近更新 更多