代码片段:
- 将实例插入对象管理器
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 个实例插入四叉树时出现错误(stdout 打印标志值,但不打印“对象(ID)...”)。当我将实例数量减少到 10 个或更少时,一切正常。
我会很感激任何建议,因为我不知道在哪里可以找到解决方案。对不起我的英语,我不是母语人士。