2015-12-02 29 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

也可以。 –