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」を「this」引数として「void Item::setactual(int)」に渡すと、修飾子が破棄されます

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_iteratoriterator

于 2012-11-06T01:47:58.570 に答える