私は構造体のリストを作成しています。リストのメンバーの1つを新しい値で更新しようとしていて、リストに戻しています。intをインクリメントするとき、ベクトルの添え字が範囲外ですか?
私は構造体の値をイテレータでコピーできているようですが、構造体のメンバ(int ++を使用)の値を更新しようとすると、すべてのもののベクトルクラスに例外がスローされます。
ここで何が起こっているかについての説明は役に立ちます。
struct Blob
{
int x;
int y;
};
list<Blob> blob;
// Add a Blob to blob using .push_back(); here
for(list<Blob>::iterator iterator=blob.begin(); iterator!=blob.end(); ++iterator)
{
Blob temp;
temp.x = ((Blob)*iterator).x;
temp.y = ((Blob)*iterator).y;
if (temp.x < 10 - 1)
temp.x++; /* Exception: vector: line 932 - "Vector subscript out of range" */
((Rain)*iterator) = temp;
}
をこれは自分自身であり、これについてのベクトルを含んでいません。 – PlasmaHH
'((Rain)* iterator)= temp;行とは何ですか? 「雨」とは何ですか、なぜあなたはキャストしていますか? – interjay
「temp.x = iterator-> x'」と言ってみませんか? (キャストは必要ありませんが、それはあなたの問題ではありません) – Benj