do { Food* food; food=new Food(Length, Width); } while (body[food->getfood_x()]); 这怎么改正确
时间: 2024-03-20 15:38:52 浏览: 37
UTF-8.gz_Summer Food
在你提供的代码中,在`do-while`循环的每次迭代中都会创建一个名为`food`的指针,然后判断这个指针所指向的位置是否被蛇身体占据。但是在每次循环结束时,`food`指针都会被销毁(因为它是在循环体内定义的局部变量),因此在下一次循环时,你又需要重新创建一个新的`food`指针。
解决这个问题的方法是在循环之前创建一个`food`指针,然后在每次循环中更新它所指向的对象即可。具体来说,你可以按照以下方式修改代码:
```c++
Food* food;
do {
food = new Food(Length, Width);
} while (body[food->getfood_x()][food->getfood_y()]);
```
这里将`food`指针定义在循环之外,然后在每次循环中调用`getfood_x()`和`getfood_y()`函数来获取食物的位置。需要注意的是,在使用`food`指针之前,你需要确保它所指向的对象已经被创建。因此,在循环之前,你需要通过以下方式创建一个新的`Food`对象:
```c++
food = new Food(Length, Width);
```
这样就可以在循环中使用`food`指针来获取食物的位置了。同时,在游戏结束时,需要通过以下方式释放`food`指针所指向的对象的内存:
```c++
delete food;
```
这一行代码将会释放`food`指针所指向的`Food`对象的内存。
阅读全文