C++ SDL游戏:2D向量上的崩溃
我正在使用SDL制作一个游戏,一切正常,但当我在Windows 7上测试它时(我在win XP上编写代码),它在这一部分崩溃:C++ SDL游戏:2D向量上的崩溃,c++,pointers,vector,struct,sdl,C++,Pointers,Vector,Struct,Sdl,我正在使用SDL制作一个游戏,一切正常,但当我在Windows 7上测试它时(我在win XP上编写代码),它在这一部分崩溃: void ImageManager::DrawObjectTile(int i,int j) { ScreenPosition.x = (j*TITLE_SIZE) - MapScrollX; ScreenPosition.y = (i*TITLE_SIZE) - MapScrollY; if (Main
void ImageManager::DrawObjectTile(int i,int j)
{
ScreenPosition.x = (j*TITLE_SIZE) - MapScrollX;
ScreenPosition.y = (i*TITLE_SIZE) - MapScrollY;
if (Main_BuildingManager_Ptr->Building_Vector[i][j].BuildingType==TX_EmptyTile)
{
Source.x = EMPTY_TILE_X;
Source.y = EMPTY_TILE_Y;
SDL_RenderCopy( Main_System_Ptr->GetRenderer(),
Sheet_1,
&Source,
&ScreenPosition);
}
基本上,它在这条线上崩溃了:
if (Main_BuildingManager_Ptr->Building_Vector[i][j].BuildingType==TX_EmptyTile)
我一直在调试这个,I和j变量都是正确的。向量也被填充
BuildingManager::BuildingManager()
{
Building_Vector.resize(LEVEL_HEIGHT);
for (int y=0; y<Building_Vector.size(); y++)
{
Building_Vector[y].resize(LEVEL_WIDTH);
for (int x=0; x<Building_Vector[y].size(); x++)
{
Building_Vector[y][x].BuildingType = TX_EmptyTile;
}
}
}
BuildingManager::BuildingManager()
{
建筑向量。调整大小(标高高度);
对于(int y=0;yw什么是Main\u BuildingManager\u Ptr
?什么是Main\u BuildingManager\u Ptr->Building\u Vector
?指针的值是什么?i
和j
的值是什么(以及LEVEL\u HEIGHT
和LEVEL\u WIDTH
)还有,崩溃的确切原因是什么?Main\u BuildingManager\u Ptr
是指向Building\u Manager
类的指针。Main\u BuildingManager\u Ptr->Building\u Vector
很好,我如何访问向量。I
和j
都是0,LEVEL\u高度
是58,LEVEL\u宽度
是64。崩溃很简单穆斯“不发送”错误。指针的值是什么意思?Main\u BuildingManager\u Ptr
?我假设Building\u Vector
是一个std::Vector
?至于指针,是的,如何声明和初始化Main\u BuildingManager\u Ptr
?是的,Building\u Vector
是std::Vector Building\u Vector
其中BuildingInfo
是一个结构类型数组。至于指针,它在BuildingManager.cpp文件BuildingManager*Main\u BuildingManager\u Ptr
的顶部声明,我的BuildingManager.h文件中也有extern BuildingManager*Main\u BuildingManager\u Ptr