【问题标题】:Printing the contents of an Array with a Class Method使用类方法打印数组的内容
【发布时间】:2013-03-01 19:09:51
【问题描述】:

我正在尝试将“房间”对象的二维数组的内容作为数组中内容的一种打印/显示返回。

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 显示“#”,如果它是一个房间,请留下一个“”。

我不确定我应该在方法声明中返回的位?

任何帮助或指出正确的方向将不胜感激

【问题讨论】:

    标签: c++ arrays oop printing


    【解决方案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";
      }
    }
    

    【讨论】:

    • 谢谢,但这并不能回答我想要的问题。这是我不知道该怎么做的返回位。因为这是一个类方法,所以它需要一个返回类型。我正在考虑做你刚刚在类似结构的字符串生成器中所做的事情并返回一个字符串,除非你可以推荐其他任何东西?
    • @Springfox 返回数组(已在您的上一个问题中回答)和打印数组之间的联系还不清楚。
    • 我同意胡安。否则我相信你想要一个数组的字符串表示并且你想要返回它?除非您想将其序列化或将其写入文件,否则这是无用的。
    • 我希望能够以某种方式输出生成的房间数组或 m_map[10][10] 中存在的视觉表示
    • @Springfox 听起来像答案中提供的功能。
    【解决方案2】:

    通过两个维度循环。每次循环通过 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;
      }
    }
    

    【讨论】:

    • 好的,这可以用来获取它们,但是从类方法中我该如何返回呢?作为一个像编队一样的字符串生成器?还是..?
    • 无需退货。您需要一个名为“MyClass”的类,并引用您尝试打印的数组。 “cout”调用会将您提供的任何内容打印到输出流,在您的情况下可能是控制台。
    • 我不知道我可以使用这样的方法,我刚刚得到它,所以它显示为 10 x 10 网格,与一行字符并置,我会很高兴接着就,随即。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多