作为我从学校获得的作业的一部分,我一直在尝试解决这个分配/销毁问题,基本上我需要分配一个我设计的简单类的二维数组指针。
class RobotsWorld{
public:
RobotsWorld(int width,int hight);
~RobotsWorld();
/**
* copy,Assign,operator=
*/
//RobotsWorld(const RobotsWorld &);
//void Assign(const RobotsWorld &);
//RobotsWorld& operator=(const RobotsWorld &);
bool addRobot(Robot & r,Point p);
bool moveRobot(Robot & r);
bool removeRobot(Robot & r);
Point getPosition(Robot r);
string toString();
Robot* getRobotInWorld(Robot & r);
/** validation functions **/
bool checkOutOfBounds(int,int);
bool isEmptySlot(int x,int y);
bool ableToMove(Robot &);
private:
Robot*** robots;
Point point;
int width,height;
};
这不是函数的完整源文件,但这些函数会导致崩溃\内存丢失。(是的,它必须被定义为三重指针 - ***机器人)
RobotsWorld::RobotsWorld(int width,int height)
:width(width),height(height)
{
robots = new Robot**;
*robots = new Robot*[height];
for(int i = 0 ; i < height ; i++){
robots[i] = new Robot*[width];
for(int j = 0 ; j < width ; j++)
robots[i][j] = NULL;
}
}
RobotsWorld::~RobotsWorld(){
for(int i = 0 ; i < height ; i++){
delete [] robots[i];
robots[i] = NULL;
}
delete [] *robots;
delete **robots;
}
机器人类和主类没有分配什么。我一直在努力寻找解决方案,但即使描述这种情况也证明自己很困难。