我正在开发一个 2d 平台游戏。一切都很好,直到我遇到一些难以解决的问题。关卡地图存储在动态多维数组(char **map)中。它工作正常,直到我想重新定义它
这是代码的一部分:
Map& Map::operator=(const Map& rhs)
{
if(width!=0||height!=0)
{
for(int i=0;i<width;i++)
delete[] map[i];
delete[] map;
} //deleting previously created array
height=rhs.height;
width=rhs.width; //receiving other map's size
map=new char* [width];
walkmap=new unsigned char* [width];
objmap=new char* [width];
for(int i=0;i<width;i++)
{
*(map+i)=new char[height];
} //creating new array
for(int h=0;h<height;h++)
for(int w=0;w<width;w++)
{
map[w][h]=rhs.map[w][h];
} //receiving new values
//...
}
第一次一切正常,但是当我第二次需要重新定义数组时,我的程序在该部分崩溃,当数组从另一个接收新值时。可能是我错过了一些东西,但我找不到它!我正在寻找这个问题,但没有发现我做错了什么。请帮帮我。