Есть класс (который по сути своей структура и далее я буду называть его именно так):
class GoodPosition
{
int GSID; //Good or Service ID
int Amount;
double Price;
int DealID; // Link to Basket ID
int NumOfCell;//number of position in current basket
/*Далее идут конструкторы и геттеры, но их я опустил, дабы не мешались*/
}
Эта структура лежит в векторе QVector Goods
QVector<GoodPosition> * Goods = new QVector<GoodPosition>();
Мне необходимо обратиться к элементу вектора по индексу и к полю структуры для того, чтобы изменить это поле. Я делаю это так:
void CheckDublicates()// данный метод пробегает по исходному списку и уничтожает дубликатные объекты, объединяя их в один.
{
for (int i = 0; i < Goods->count(); i++)
{
for (int j = i + 1; j < Goods->count(); j++)
{
if (Goods->at(i).GSID == Goods->at(j).GSID)
{
// this->Goods->at(i).Amount = this->Goods->at(i).Amount + this->Goods->at(j).Amount;
this->Goods->at(i).Amount = addAmount(this->Goods->at(i), this->Goods->at(j));
}
}
}
}
Естественно, такая конструкция не работает. Это, как я понял, потому что at(i) возвращает нам константу и даёт работать только с константными методами.
Вопрос: Как изменить данные в ячейке структуры, которая лежит в QVector???
Согласно словам @vegorov, для того, чтобы обратиться к ячейке на запись в QVector нужно вместо at(i) использовать operator[](i).
Продвижение своими сайтами как стратегия роста и независимости