Есть класс (который по сути своей структура и далее я буду называть его именно так):
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).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть программа, которая хорошо работает с небольшим объемом текста
Задача была написать тривиальную структуру и отсортировать ее в процентном соотношении по кол-ву поступивших в вуз учеников методом сортировки...
Как работает emplace с точки зрения размещения в памяти ?