カードを描画したいプログラムをコーディングしてから、カードが再度描画されないように削除します。
私はdeckと呼ばれるカードのベクトル(SuitとValueを定義する2つの構造体を含むクラス)を持っていますが、イテレーターの使い方がよくわかりません。ここではコードスニペットです。
void Player::discardCard(CardDeck masterDeck)
{
cout << "Erasing: " << masterDeck.getDeck().at(cardSelect).toString() << endl;
/*Attempt1*/
masterDeck.getDeck().erase(masterDeck.getDeck().begin()+cardSelect);
/*Attempt 2*/
vector<Card>::iterator itr;
itr = masterDeck.getDeck().begin() + cardSelect;
masterDeck.getDeck().erase(itr);
}
cardSelectには、削除するカードの場所があります。これは、0とデッキのサイズの境界内でランダムに生成されます。したがって、境界外の位置を指しているべきではありません。
コンパイルするたびに、次のエラーが発生します。
"Expression: vector erase iterator outside range"
私は本当に何をすべきかわかりません、うまくいけば、誰かが私を助けてくれることを願っています、事前に感謝します!