Question

Je n'arrive pas à comprendre ce qui ne va pas avec cette partie du code :

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

J'obtiens des erreurs :

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'ai déjà réessayé au moins toutes les variantes de ces deux fonctions avec const et sans un.

Était-ce utile?

La solution

QVector<T>::at() renvoie un const T&, ce qui signifie que vous ne pouvez pas appeler des fonctions non membres const sur le résultat (comme votre setFirstTeam() fonction).Pourquoi Qt ne fournit pas de surcharge non constante au-delà de moi lié à la sémantique de copie sur écriture de Qt pour ses conteneurs (merci à @peppe de l'avoir signalé).Il fournit les deux surcharges pour operator[], vous devriez donc simplement faire ceci :

_aliances[i].setFirstTeam(firstAlianceTeam);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top