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