C++ 随机生成的多维布尔指针错误
我让这个函数随机生成真/假值,并将它们分配给多维指针,然后返回指针C++ 随机生成的多维布尔指针错误,c++,pointers,C++,Pointers,我让这个函数随机生成真/假值,并将它们分配给多维指针,然后返回指针 bool** generateMap() { int randNum = 0; int X = 7; int Y = 7; bool** MAP = new bool*[X]; for (int i = 0; i < X; ++i) MAP[i] = new bool[Y]; for (int x = 0; x < 8; x++) {
bool** generateMap()
{
int randNum = 0;
int X = 7;
int Y = 7;
bool** MAP = new bool*[X];
for (int i = 0; i < X; ++i)
MAP[i] = new bool[Y];
for (int x = 0; x < 8; x++)
{
int rooms = 0;
for (int y = 0; y < 8; y++)
{
if (rooms < 10)
{
randNum = rand() % 6;
switch (randNum)
{
case 0:
MAP[x][y] = true;
++rooms;
break;
case 1:
MAP[x][y] = false;
break;
case 2:
MAP[x][y] = false;
break;
case 3:
MAP[x][y] = false;
break;
case 4:
MAP[x][y] = false;
break;
case 5:
MAP[x][y] = false;
break;
default:
break;
}
}
else
{
}
}
}
return MAP;
}
bool**generateMap()
{
int randNum=0;
int X=7;
int Y=7;
bool**MAP=新bool*[X];
对于(int i=0;i
它可以编译,但是有一个运行时错误,我的代码怎么了
X
和Y
都等于7,但是你说:for(int X=0;X<8;X++)
-所以你是在数组的末尾运行。数组变为0..6,但您可以访问索引7
如果使用(intx=0;x,您会感觉更好。
——这就是使这些值成为符号而不仅仅是硬编码的全部意义
当您点击“10个房间”时,您也会停止设置值-关于使用默认值的注释可能是正确的(为什么不在填充10个房间后中断循环?)-最后但并非最不重要的一点:以这种方式使用for,无法保证您将实际获得任何房间。他们可能都是假的