2013-03-01 4 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

+0

@Springfox связь между возвратом массива (который был отвечен в вашем предыдущем вопросе) и печать массива совсем не понятна. – juanchopanza

+0

Я согласен с juan. В противном случае я считаю, что вам требуется строковое представление массива, и вы хотите его вернуть? Это бесполезно, если вы не хотите сериализовать или записать его в файл. –

1

Loop корыта обоих размеров. Каждый раз, когда вы зацикливаете x, вы показываете все комнаты внутри столбца и добавляете запятую впоследствии.

При достижении конца строки и перехода к следующей строке просто добавьте разрыв строки, чтобы напечатать следующий столбец на новой строке.

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

+0

Нет необходимости возвращать что-либо. Вы должны иметь класс с именем «MyClass» со ссылкой на массив, который вы пытаетесь распечатать. Вызов «cout» будет печатать все, что вы передаете в выходной поток, который в вашем случае, вероятно, будет консолью. –

+0

Я понятия не имел, что могу использовать такой метод, я просто получаю его так, чтобы он показывал сетку размером 10 х 10, как показано на линии символов, и я буду очень доволен этим. :) – Springfox

Смежные вопросы