2015-12-02 31 views
0

我是新来的指针,很难过。我正在做一个捕食者 - 猎物模拟器,并且拥有一个拥有一组存储对象的城市类,这些存储对象最终被转换为人类或僵尸。城市类有一个阵列:返回指针数组成员变量的元素

class City 
{ 
protected: 
    Being *grid[GRID_HEIGHT][GRID_WIDTH];//holds beings 

我将元素初始化为null以便保持简单。

City::City() 
{ 
    for (int i = 0; i < GRID_HEIGHT; ++i) { 
     for (int j = 0; j < GRID_WIDTH; ++j) { 
      this->grid[i][j] = NULL; 
     } 
    } 
} 

我也有一个方法,应该从数组中返回一个存在。 这是我得到的错误:“标识符”网格'未定义“,或者如果我使用”this“关键字它说只允许在非静态成员函数。

Being City::*getBeing(int x, int y) 
{ 
    return grid[x][y]; 
} 

,所以我可以从主方法来访问它,只是打印一个占位符格:

City myCity; 

int main(){ 
     if (myCity.getBeing(i,j) == null) 
     { 
      cout << "O"; 
     } 
} 

我怎样才能解决这个问题?有更好的理解指针的经验法则吗?

回答

3

getBeing功能的定义应该是:

Being *City::getBeing(int x, int y) { ... } 
+0

它是那么容易。另外为了将来的参考,我还将NULL初始化器更改为0,因为我在主要类“标识符null未定义”中出现错误。谢谢! –

+1

它应该是'NULL',而不是'null'。如果你正在使用C++ 11,我强烈建议你使用'nullptr'代替! – simpel01

+0

也可以。 –