如何在 C++ 中将 int map[60][60] 数组从我的 main.cpp 文件传递到我的 findpath.cpp 文件?
How do I pass an int map[60][60] array from my main.cpp file to my findpath.cpp file in c++?
好的,我有一个数组
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])
我真的很难弄清楚如何做到这一点并实施它,请帮忙。
编辑:我在当前代码中遇到的错误:
Error 3 error LNK2019: unresolved external symbol "class
std::basic_string,class
std::allocator > __cdecl findPath(int const &,int const &,int
const &,int const &,int (* const)[60])"
(?findPath@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABH000QAY0DM@H@Z)
referenced in function _main C:\Users\Cameron\Documents\Visual Studio
2012\Projects\Project2\Project2\main.obj Project2
我很确定我的头文件做错了,因为当我尝试使用 int (&m)[60][60] 格式时出现了这个问题。
在此之前它编译了,但在 运行 时失败了,因为没有实际传递数组的内容。相反,地图是空白的,导致路径查找算法只绘制直线。
以下是将数组从一个函数传递到另一个函数的三种方法:
#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;
}
好的,我有一个数组
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])
我真的很难弄清楚如何做到这一点并实施它,请帮忙。
编辑:我在当前代码中遇到的错误:
Error 3 error LNK2019: unresolved external symbol "class std::basic_string,class std::allocator > __cdecl findPath(int const &,int const &,int const &,int const &,int (* const)[60])" (?findPath@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABH000QAY0DM@H@Z) referenced in function _main C:\Users\Cameron\Documents\Visual Studio 2012\Projects\Project2\Project2\main.obj Project2
我很确定我的头文件做错了,因为当我尝试使用 int (&m)[60][60] 格式时出现了这个问题。
在此之前它编译了,但在 运行 时失败了,因为没有实际传递数组的内容。相反,地图是空白的,导致路径查找算法只绘制直线。
以下是将数组从一个函数传递到另一个函数的三种方法:
#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;
}