Хорошо, так что у меня есть массив
int map[60][60];
который заполняется стенами и имеет начальную позицию и так далее в int main ().
Позже я вызываю алгоритм поиска пути, который находится в другом файле .cpp.
string route=findPath(xA, yA, xB, yB);
который передает случайные начальные и конечные точки на карте в findPath. Проблема, с которой я столкнулся, заключается в том, что я действительно хочу сохранить генерацию карты в отдельном файле и в конечном итоге переместить ее из основного в свой собственный .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: неразрешенный внешний символ «класс
станд :: basic_string, класс
std :: allocator> __cdecl findPath (int const &Int const &, внутр
Const &Int const &, int (* const) [60]) «(? findPath @@ YA? AV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ ABH000QAY0DM @ H @ Z)
ссылка в функции _main C: \ Users \ Cameron \ Documents \ Visual Studio
2012 \ Проекты \ 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;
}