Я не могу понять, что случилось с этой части кода:Изменение состояния структуры, хранящейся в QVector
struct aliance {
...
void setFirstTeam(const team& _team) {
firstTeam = _team;
}
void setSecondTeam(const team& _team) {
secondTeam = _team;
}
}
QVector<aliance> _aliances;
...
_aliances.at(i).setFirstTeam(firstAlianceTeam);
_aliances.at(i).setSecondTeam(secondAlianceTeam);
я получаю ошибки:
passing 'const aliance' as 'this' argument of 'void aliance::setFirstTeam(const team&)' discards qualifiers [-fpermissive]
passing 'const aliance' as 'this' argument of 'void aliance::setSecondTeam(const team&)' discards qualifiers [-fpermissive]
Я уже повторен по крайней мере, все варианты этих двух функций с const
и без него.
Поскольку 'at' предназначен для предотвращения отсоединения, и это делает очевидным, что вы не прикасаясь содержимое контейнера. 'operator []' имеет вместо const перегрузки. Другими словами: 'vector.at (i) .constMethod()' будет стоить полную копию вектора, если вектор не был объявлен const. – peppe
@peppe О, право. Я забыл о семантике Qt для записи на контейнеры. – Angew