代码之家  ›  专栏  ›  技术社区  ›  Yakri

如何在c++中将int-map[60][60]数组从main.cpp文件传递到findpath.cpp文件?

  •  0
  • Yakri  · 技术社区  · 9 年前

    好的,我有一个数组

    int map[60][60];
    

    它由墙填充,并在int main()中具有起始位置等。

    稍后我调用另一个.cpp文件中的路径查找算法

    string route=findPath(xA, yA, xB, yB);
    

    它将地图上的随机起点和终点传递给findPath。我遇到的问题是,我真的想将地图生成保存在一个单独的文件中,并最终将其从main移动到自己的.cpp。为了实现这一点,我需要能够将完成的地图传递给findPath,从而

    findPath(xA, yA, xB, yB, map);
    

    然而,我没有一个该死的线索来开始做这件事,我尽最大努力在网上寻求帮助,结果失败了。尽管有很多关于如何做到这一点的教程,但我还没有找到适合我的具体情况的,或者让它发挥作用。

    我对头文件的最佳猜测如下:

    #ifndef FINDPATH_H
    #define FINDPATH_H
    
    #include <iostream>
    #include <iomanip>
    #include <queue>
    #include <string>
    #include <math.h>
    #include <ctime>
    
    using namespace std;
    
    string findPath(const int &, const int &, const int &, const int &, int [60][60]);
    #endif
    

    我的findPath函数声明如下

        string findPath(const int & xCoordStart, const int & yCoordStart,
     const int & xCoordEnd, const int & yCoordEnd, int (&map)[60][60])
    

    我真的很难弄清楚到底该怎么做并实施它,请帮忙。

    编辑:当前代码出错:

    错误3错误LNK2019:未解析的外部符号“class std::basic_string,类 std::分配器>__cdecl findPath(int常量&,int常量&aamp;,int 常量&,int常量&,int(*常量)[60])“ (?findPath@@YA?AV?)$basic_string@DU?$char_traits@D@标准@@V$allocator@D@2@@标准@@ABH000QAY0DM@H@Z)上 在函数_main C:\Users\Cameron\Documents\Visual Studio中引用 2012\项目\项目2\项目2\main.obj项目2

    我很确定我在头文件中做错了什么,因为当我尝试使用int(&m)[60][60]格式时出现了问题。

    在此之前,它进行了编译,但由于未实际传递数组的内容而在运行时失败。相反,地图是空白的,导致路径查找算法只绘制直线。

    1 回复  |  直到 9 年前
        1
  •  0
  •   R Sahu    9 年前

    以下是将数组从一个函数传递到另一个函数的三种方法:

    #include <iostream>
    
    void foo(int (&m)[100][100])
    {
       std::cout << m[10][10] << std::endl;
    }
    
    void bar(int (*m)[100])
    {
       std::cout << m[10][10] << std::endl;
    }
    
    void baz(int (m)[][100])
    {
       std::cout << m[10][10] << std::endl;
    }
    
    int main()
    {
       int m [100][100];
       foo(m);
       bar(m);
       baz(m);
       return 0;
    }