替换向量中的元素值

时间:2012-11-06 01:45:22

标签: c++

所以我正在做一个库存计划。我有一个类项目的向量,我想用户输入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'参数传递'丢弃限定符

3 个答案:

答案 0 :(得分:1)

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

vector<Item>::iterator it;

答案 1 :(得分:1)

你应该使用

vector<Item>::iterator

而不是

vector<Item>::const_iterator

const_iterator表示只读。

答案 2 :(得分:1)

setactual显然无法对const对象进行操作(就像您通过const_iterator获得的对象;将const_iterator更改为普通iterator