0

所以我正在做一个库存计划。我有一个类项目的向量,我想用户输入 Id,然后运行一个迭代器以匹配向量中的 Id 并更改售出数量的值:

这是我的代码的一部分:

 vector<Item>::const_iterator it;
  for(it=items.begin(); it !=items.end(); it++){
    if (it->getID() == id){
      amount=it->getactual()-sold;
      it->setactual(amount);

那是在我的课上

int getactual()const{return actual_quantity;}
void setactual(int quantity){actual_quantity=quantity;}

但我收到一个错误:将 'const Item' 作为 'void Item::setactual(int)' 的 'this' 参数传递会丢弃限定符

4

3 回答 3

1

问题是您正在使用 const 迭代器,但您正在修改它指向的内容(调用非 const 成员),请尝试使用常规迭代器:

vector<Item>::iterator it;
于 2012-11-06T01:47:24.017 回答
1

你应该使用

vector<Item>::iterator

代替

vector<Item>::const_iterator

const_iterator表示只读。

于 2012-11-06T01:47:25.487 回答
1

setactual显然不能对const对象进行操作(作为您通过const_iterator; 获得的对象更改const_iterator为 plain iterator.

于 2012-11-06T01:47:58.570 回答