Pergunta

Não consigo entender o que há de errado com esta parte do código:

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);

Eu recebo erros:

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]

Já tentei novamente pelo menos todas as variantes dessas duas funções com const e sem um.

Foi útil?

Solução

QVector<T>::at() retorna um const T&, o que significa que você não pode chamar funções-membro não const no resultado (como seu setFirstTeam() função).Por que o Qt não fornece uma sobrecarga não-const é além de mim relacionado à semântica copy-on-write do Qt para seus contêineres (obrigado a @peppe por apontar isso).Ele fornece ambas as sobrecargas para operator[], então você deve fazer isso:

_aliances[i].setFirstTeam(firstAlianceTeam);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top