【问题标题】:replacing an element value in a vector替换向量中的元素值
【发布时间】:2012-11-06 09:48:51
【问题描述】:

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

【问题讨论】:

    标签: c++


    【解决方案1】:

    你应该使用

    vector<Item>::iterator
    

    而不是

    vector<Item>::const_iterator
    

    const_iterator 表示只读。

    【讨论】:

      【解决方案2】:

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

      vector<Item>::iterator it;
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2016-08-16
          • 1970-01-01
          • 1970-01-01
          • 2014-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-23
          • 1970-01-01
          相关资源
          最近更新 更多