gpt4 book ai didi

c++ - 改变存储在 QVector 中的结构的状态

转载 作者:行者123 更新时间:2023-11-30 02:50:59 25 4
gpt4 key购买 nike

我不明白这部分代码有什么问题:

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() 函数)。为什么 Qt 不提供非常量重载 beyond me 与 Qt 的容器的写时复制语义有关(感谢@peppe 指出了这一点)。它确实为 operator[] 提供了两个重载, 所以你应该这样做:

_aliances[i].setFirstTeam(firstAlianceTeam);

关于c++ - 改变存储在 QVector 中的结构的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20018381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com