سؤال

لا أستطيع أن أفهم ما هو الخطأ في هذا الجزء من التعليمات البرمجية:

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 وبدون واحد.

هل كانت مفيدة؟

المحلول

QVector<T>::at() إرجاع أ const T&, ، مما يعني أنه لا يمكنك استدعاء وظائف الأعضاء غير كونست على النتيجة (مثل الخاص بك setFirstTeam() وظيفة).لماذا كيو تي لا توفر الزائد غير كونست هو أبعد مني المتعلقة دلالات نسخة على الكتابة كيو تي لحاوياتها (بفضل @بيبي لافتا إلى ذلك).أنها لا توفر كل من الزائد ل operator[], ، لذلك يجب عليك فقط القيام بذلك بدلا من ذلك:

_aliances[i].setFirstTeam(firstAlianceTeam);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top