2013-03-01 26 views
0

我試圖返回「房間」對象的二維數組的內容,作爲打印/顯示數組中內容的一種。使用類方法打印數組的內容

Room* m_map[10][10]; 

房間的散射被像這樣產生的:

//Initialise array to NULL 
for(int x=0;x<10;x++) 
{ 
    for(int y=0;y<10;y++) 
     m_map[x][y] = NULL; 
} 

for(int n=0; n<10; n++) 
{  
    for(int ran=0; ran<3; ran++) 
    { 
     int r_n = rand() % 10 ; 

     Room* r = new Room(n, "Normal", true, false, false, true); 
     m_map[r_n][n] = r; 
    }  

} 

我然後願意爲其中這些房間都是用戶顯示/打印,在參照NULL。

所以我可以例如如果NULL顯示'#',如果它是一個房間留下一個''。

我不確定我應該在方法聲明中返回的位?

在正確的方向任何幫助或指向會真正理解

回答

1

添加了一種陣列式打印到類:

void print() const 
{ 
    for(int n=0; n<10; ++n) 
    {  
    for(int m=0; m<10; ++m) 
    { 
     std::cout << m_map[n][m] ? : "# " : ". "; 
    } 
    std::cout << "\n"; 
    } 
} 
+0

謝謝,但這並沒有回答我後來的問題。這是我不知道該怎麼做的回報。因爲這是一個類方法,它需要一個返回類型。我正在考慮像剛纔那樣在結構化的字符串生成器中完成並返回一個字符串,除非您可以推薦其他任何東西? – Springfox 2013-03-01 19:22:31

+0

@Springfox返回一個數組(之前的問題已得到解答)和打印數組之間的聯繫並不十分清楚。 – juanchopanza 2013-03-01 19:23:29

+0

我同意juan。否則,我相信你想要一個數組的字符串表示,你想返回它?除非要序列化或將其寫入文件,否則這種方法毫無用處。 – 2013-03-01 19:25:30

1

循環通過兩個維度。每次循環時,都會顯示一列中的所有房間,然後再添加一個逗號。

當到達行尾並移動到下一行時,只需添加一個換行符即可在新行上打印下一列。

void MyClass::printMap(unsigned int numOfRows, unsigned int numOfCols) 
{ 
    using std; 
    for(unsigned int y = 0; y < numOfRows ; y++) 
    { 
    for(unsigned int x = 0; x < numOfCols ; x++) 
    { 
     if(m_map[y][x] == NULL) 
      cout << # << ","; 
     else 
      cout << m_map[y][x].roomName() << ","; 
    } 

    cout << endl; 
    } 
} 
+0

好吧,這可以讓他們工作,但從類方法我怎麼能返回這個?作爲像編隊一樣的字符串生成器?要麼..? – Springfox 2013-03-01 19:27:33

+0

沒有必要返回任何東西。您需要有一個名爲「MyClass」的類,並引用您嘗試打印的數組。 「cout」調用將打印任何你給它的輸出流,在你的情況下可能是控制檯。 – 2013-03-01 19:33:20

+0

我不知道我可以使用這樣的方法,我現在只是將它顯示爲一個10 x 10的網格,與一行字符相對應,我會對此感到滿意。 :) – Springfox 2013-03-01 19:42:44