Вложенные QMap и QList не позволят мне добавить / push_back - PullRequest
2 голосов
/ 02 февраля 2012

Я пытаюсь использовать вложенный 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»: невозможно преобразовать этот «указатель» из «const QList» в «QList &»

Я уверен, что это что-то простое, что я пропускаю, или, может быть, есть более простое решение, которое ускользает от меня. Любая помощь с благодарностью.

1 Ответ

9 голосов
/ 02 февраля 2012

Как видите, здесь QMap::value(const Key & key) const; возвращает const T, что означает, что вы не можете изменять то, что получаете. Даже если бы вы могли изменить копию значения, которое вы поместили в карту. Вам нужно T & QMap :: operator [] (const Key & key) , которое возвращает значение, связанное с ключом , в качестве модифицируемой ссылки . Так что звоните

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