私の SDL プログラムでは、マップ構造を使用して、特定のクラス内のオブジェクトの「無限」配列をシミュレートしています。コードは問題なくコンパイルできますが、プログラムを実行すると、マップを使用する関数の 1 つがトリガーされるとすぐにプログラムがクラッシュし、値 3 が返されます。
だから、これがまさに私がやっていることです:
class MyClass
{
public:
int MyFunction();
protected:
std::map< int, MyObject > MyMap;
}
int MyClass::MyFunction()
{
...
int i;
if( MyMap.empty() )
{
i = 1;
}
else
{
i = MyMap.size() + 1;
}
MyMap[ i ] = PreviouslyDefinedObject;
return i;
}
MyFunction() が MyClass オブジェクトから呼び出されると、クラッシュが発生します。MyMap で何らかの使用が行われるたびに発生するようです: 最後から 2 番目の行をコメントアウトして i を返そうとするとクラッシュし、i = 1 を設定してオブジェクトを MyMap[i] に割り当てるとクラッシュします。
地図を使ったのはこれが初めてなので、地図を正しく使っているか確信が持てません。これはどこかの基本的な間違いですか?誰かが私を正しい方向に向けることができますか? 乾杯。