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]);
}
}
}
谢谢!