Как передать массив int map [60] [60] из моего файла main.cpp в мой файл findpath.cpp на c ++?

Хорошо, так что у меня есть массив

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] формат.

До этого он компилировался, но не выполнялся во время выполнения, фактически не передавая содержимое массива. Вместо этого карта была пустой, в результате чего алгоритм поиска пути рисовал только прямые линии.

0

Решение

Вот три способа передачи массива из одной функции в другую:

#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;
}
0

Другие решения


По вопросам рекламы [email protected]