コードの一部:
-インスタンスをオブジェクト マネージャーに挿入する
Object* o;
for(int i=0; i<10; i++)
{
o = new Tile(32*i, 0);
o->ID = i+2;
o_manager.Create(i+2,o);
}
o = new Player(50.,50.);
o->ID = 1;
o_manager.Create(1,o);
-マネージャーからクアッドツリーへのインスタンスの挿入
CollisionDetector = new QuadTree(0, bounds);
for(std::map<unsigned int, Object*>::iterator it = Instances.begin(); it != Instances.end(); it++)
{
std::cout << it->second->COL << std::endl;
if(it->second->COL) //probable place of error
{
std::cout << "Object (" << it->first << ")... ";
CollisionDetector->insert(it->second);
}
std::cout << "inserted into QuadTree" << std::endl;
}
原因がまったくわからない問題があります。11 個のインスタンスを (マップ コンテナーに) 配置するオブジェクト マネージャー クラスがあります。次に、すべてのステップで、衝突フラグが設定されたインスタンスを四分木リストに渡します。
実行後、「アクセス違反の読み取り場所 0x0000000c」というエラーが表示されます。
stdout から得た情報から、11 番目のインスタンスを quadtree に挿入しているときにエラーが表示されます (stdout はフラグ値を出力しますが、「オブジェクト (ID)...」は出力しません)。インスタンスの数を 10 以下に減らすと、すべて正常に動作します。
どこに解決策があるのかわからないので、アドバイスをいただければ幸いです。私の英語で申し訳ありませんが、私はネイティブ スピーカーではありません。