「アサート」とは正確には何ですか。より具体的には、エラーを取り除くにはどうすればよいですか。データ メンバー int x を持つクラスへのポインターのベクトルを作成し、次のようにします。
for(I=antiviral_data.begin();I<antiviral_data.end();I++)
{
if((*I)->x>maxx)
{
antiviral_data.erase(I);
}
}
プログラムを実行すると、x が maxx よりも大きくなるまでエラーは発生せず、.erase() を使用すると、次のエラーが発生します。
デバッグ アサーションに失敗しました!
プログラム: ...My Documents\O.exe ファイル: ...include\vector 行: 116
式: ("this->_Has_container()",0)
プログラムがどのようにアサーション エラーを引き起こすかについては、アサートに関する Visual C++ のドキュメントを参照してください。
(アプリケーションをデバッグするには、[再試行] を押します)
[中止][再試行][無視]
また、cout を使用しようとすると、次のようになります。
cout<<(*antiviral_data.begin())->x<<endl;
次のエラーが表示されます。
デバッグ アサーションに失敗しました!
プログラム: ...My Documents\O.exe ファイル: ...include\vector 行: 98
式: ベクトル反復子は deferencable ではありません
プログラムがどのようにアサーション エラーを引き起こすかについては、アサートに関する Visual C++ のドキュメントを参照してください。
(アプリケーションをデバッグするには、[再試行] を押します)
[中止][再試行][無視]
ベクター内のデータを使用できない理由と、それを修正する方法を教えてください。
また、 antiviral_data は、単一の要素を持つポインターのベクトルです。
antiviral_data.push_back(new aX1(player.x,player.y,'>'));
それが役立つ場合。