想实现解迷宫问题,出现LNK1120报错,显示有2个无法解析的外部命令。
请问问题出现在哪里
感谢
```c++
#include<iostream>
using namespace std;
#include<stack>
using std::stack;
//arr[][]为迷宫二维数组,cur为当前位置,初始化为入口,end为出口位置
struct Point1//定义表示迷宫位置的结构体类型
{
int x;
int y;
char o;
};
struct Point2
{
int x;
int y;
};
const int r = 10;
class MazeSolution
{
public:
MazeSolution();
~MazeSolution();
void Maze(int arr[r][r], Point1& cur, Point2 end);
//void Maze2(int arr[r][r], Point1& cur, Point2 end);
private:
stack<Point2>Stack;
};
void MazeSolution::Maze(int arr[r][r], Point1& cur, Point2 end)
{
do {
arr[cur.x][cur.y] = 2;//设置当前为有效
Stack.push({ cur.x,cur.y });//入栈
if (arr[cur.x][cur.y + 1] == 0)//向东搜索
{
cur.y++;
cur.o = 'e';
}
else if (arr[cur.x + 1][cur.y] == 0)//向南搜索
{
cur.x++;
cur.o = 's';
}
else if (arr[cur.x][cur.y - 1] == 0)//向西搜索
{
cur.y--;
cur.o = 'w';
}
else if (arr[cur.x - 1][cur.y] == 0)//向北搜索
{
cur.x--;
cur.o = 'n';
}
else
{
arr[Stack.top().x][Stack.top().y] = -1;//设置当前位置走不通
Stack.pop();//当前位置出栈
cur.x = Stack.top().x;
cur.y = Stack.top().y;//前一位置作为当前位置从新搜索
if (cur.o != 'e')
{
cur.y++;
cur.o = 'e';
}
else if (cur.o != 's')
{
cur.x++;
cur.o = 's';
}
else if (cur.o != 'w')
{
cur.y--;
cur.o = 'w';
}
else
{
cur.x--;
cur.o = 'n';
}
}
cout << Stack.top().x << " " << Stack.top().y << endl;
} while ((cur.x != end.x) && (cur.y != end.y));
}
//迷宫
int main()
{
int maze_graph[r][r] =
{
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
0,0,0,-1,0,0,0,-1,0,-1,
-1,0,0,-1,0,0,0,-1,0,-1,
-1,0,0,0,0,-1,-1,0,0,-1,
-1,0,-1,-1,-1,0,0,0,0,-1,
-1,0,0,0,-1,0,0,0,0,-1,
-1,0,-1,0,0,0,-1,0,0,-1,
-1,0,-1,-1,-1,0,-1,-1,0,-1,
-1,-1,0,0,0,0,0,0,0,0,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
};
Point1 cur = { 1,0,'e' };
Point2 end = { 8,9 };
MazeSolution m;
m.Maze(maze_graph, cur, end);
}
```
LNK1120 错误提示无法解析的外部命令通常是由于链接器找不到要连接的函数或变量导致的。在这个程序中,我发现代码中虽然定义了 MazeSolution 类及其成员函数,但是并未在类的声明和实现中指定为 public,因此可能导致链接器无法正确解析 Maze 函数。建议将 Maze 函数的访问权限修改为 public,或者将 MazeSolution 类的定义和实现放到同一个文件中,避免出现链接错误。