2012-11-06 85 views
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;} 

,但我得到一个错误:通过 '常量项目' 作为 '这个' 参数 '无效项目:: setactual(INT)' 丢弃预选赛

回答

1

您应该使用

vector<Item>::iterator 

而不是

vector<Item>::const_iterator 

const_iterator表示只读。

1

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

vector<Item>::iterator it; 
1
setactual

显然不能一个const对象进行操作(如,你经由const_iterator获得所述一个;变更const_iterator为纯iterator