有一个类(它本质上是一个结构,我会这样称呼它):
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).