C++ 尝试使用多维数组指针

C++ 尝试使用多维数组指针,c++,pointers,multidimensional-array,C++,Pointers,Multidimensional Array,我正在寻找解决方案,但我无法使用任何解决方案而不出错。 我正试图在控制台中绘制一张地图,使用多功能数组。我想有更多的地图,但我不能没有垃圾代码。这是地图: char map2[11][15] = { "###^######^###", "#L #", "^S #", "#S #", "# K #", "########### #", "#G #", "# #### #", "#

我正在寻找解决方案,但我无法使用任何解决方案而不出错。 我正试图在控制台中绘制一张地图,使用多功能数组。我想有更多的地图,但我不能没有垃圾代码。这是地图:

char map2[11][15] = {
"###^######^###",
"#L           #",
"^S           #",
"#S           #",
"#    K       #",
"###########  #",
"#G           #",
"#       #### #",
"#       #M   #",
"# @     #    #",
"## ########^##"};
这是一个动人的剧本:

void Game::showing_different_maps()
{
    differentmap= true;
    while (differentmap)
    {
        system("cls");
        for(int i = 0; i < 81; i++)  // i < map2[y][]
        {
            cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
        }
    system("pause>nul"); // this line prevent lagging somehow

        if(GetAsyncKeyState(VK_UP))  // arrows to move on axis (y, x)
        {
            mapka.move(-1, 0);                    
        }
        if(GetAsyncKeyState(VK_DOWN))
        {
            mapka.move(1, 0);
        }
        if(GetAsyncKeyState(VK_RIGHT))
        {
            mapka.move(0, 1);
        }
        if(GetAsyncKeyState(VK_LEFT))
        {
            mapka.move(0, -1);
        }

    }

}
我想做的事情是:在代码的某些部分,我希望指针是map2。我设法使指针“pointer”在类映射中显示void get_in_area(),但当我想在第二个代码示例中使用somemap指针绘制映射时,控制台崩溃。当我用map2[i]代替somemap[i]时,它就起作用了。如果我错过了什么,我很抱歉,我是初学者,英语不是我的第一语言。
我在本教程中编写了此脚本:

这是创建二维数组的方法:

typedef int T;
void f()
{

    T ** map = new T*[10];

    for (int i = 0; i < 10; i++)
    {
        map[i] = new T[10];
    }

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            map[i][j] = i*j;
        }
    }

    for (int i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            std::cout << map[i][j] << "\t";
        }
        std::cout << std::endl;
    }
}
typedef int T;
void f()
{
T**map=新的T*[10];
对于(int i=0;i<10;i++)
{
map[i]=新的T[10];
}
对于(int i=0;i<10;i++)
{
对于(int j=0;j<10;j++)
{
map[i][j]=i*j;
}
}
对于(int i=0;i<10;i++)
{
对于(int j=0;j<10;j++)
{

std::cout您应该学习如何传递参数,而不是使用全局(
map2
)或静态(81)变量。如果您声明:

void Game::showing_different_maps(int n, int m, char map[n][m])
{
 String   differentmap= true;
    while (differentmap)
    {
        system("cls");
        for(int i = 0; i < n; i++)  // i < map2[y][]
        {
            cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
        }
然后

void Game::showing_different_maps(int n, char **map)

因为假设数组边界=81,它会在未定义行为的情况下崩溃,它应该在C++中崩溃,尽量避免原始数组,并将它们包在一个类中,或者使用现有的类,使它以一个干净异常的更好的方式失败。大小不同,最大大小是81x81,所以我在所有地方都写了81。谢谢你的建议,但是代码示例在类中,我只是没有将整个代码包装映射到一个定义了映射边界的类中?非常感谢,我在理解方面遇到了一些问题,所以我无法理解以前的帮助,但经过一段时间之后,我没有理解ime我已经设法使用指针到指针的建议,但我遇到了另一个问题。应用程序运行,但当地图被绘制,我按下一个键时,它崩溃了。调试器只告诉我:“程序收到信号SIGSEGV,分段错误。”从互联网上我只了解到“你从不分配存储变量所需的空间”但我不知道该怎么办。我已经在我的问题中添加了更多的代码。再次感谢你在这一刻所做的一切。这不应该是对这个问题的编辑,而是一个新问题,因为它现在是一个不同的问题,当前的答案现在与这个新部分无关。哦,好的,我会提出新问题,尽管如此,谢谢你
void Game::showing_different_maps(int n, int m, char map[n][m])
{
 String   differentmap= true;
    while (differentmap)
    {
        system("cls");
        for(int i = 0; i < n; i++)  // i < map2[y][]
        {
            cout << somemap[i] << endl; // drawing a map !THIS CAUSES CRASH!
        }
char *map2[]= {
  "###^######^###",
  "#L           #",
  "^S           #",
  "#S           #",
  "#    K       #",
  "###########  #",
  "#G           #",
  "#       #### #",
  "#       #M   #",
  "# @     #    #",
  "## ########^##"};
void Game::showing_different_maps(int n, char **map)