EXC_BAD_ACCESS用于将ID分配给Tile对象

时间:2015-06-17 02:14:27

标签: c++ xcode object runtime-error implementation

Tile对象(其数组形成地图对象)的实现如下

#include "Tile.h"

Tile::Tile(){
    isPassable_ = true;
}

void Tile::setID(int ID){
    ID_ = ID;
    Tile::setVals(ID);
}

void Tile::setVals(int ID){
    switch(ID){
        case 1 : Tile::GFX_ = '.'; Tile::name_ = "Grass"; Tile::desc_ = "Some grass";
        default: Tile::GFX_ = '?'; Tile::name_ = "Error"; Tile::desc_ = "Error"; Tile::isPassable_ = false;
    }
}

int Tile::getID(){return ID_;}
char Tile::getGFX(){return GFX_;}
std::string Tile::getName(){return name_;}
std::string Tile::getDesc(){return desc_;}
bool Tile::getIsPassable(){return isPassable_;}

其中HEIGHT和WIDTH是Map标头中定义的常量int。但是,当程序运行时,我收到错误ID_ = ID;说"线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)。这可能是我在Map对象中访问其2D数组中的Tile对象的方式的问题,如下所示

#include "Map.h"

Map::Map(int buffMap[][WIDTH]){
    for(int y = 0; y < HEIGHT-1; y++){
        for(int x = 0; x < WIDTH-1; x++){
            map_[y][x]->setID(1);
        }
    }
    for(int y = 0; y < HEIGHT-1; y++){
        for(int x = 0; x < WIDTH-1; x++){
            map_[y][x]->setID(buffMap[y][x]);
        }
    }
}

谢谢!

0 个答案:

没有答案