【发布时间】:2014-02-10 15:06:45
【问题描述】:
我正在尝试制作一个解决迷宫的程序,虽然算法是正确的(至少在我的脑海中),但我遇到了二维数组的障碍。我来自 C# 和 Java,所以语法让我很伤心。
这是一个 SSCCE:
//Main.cpp
#include "MazeSolver.h"
int main()
{
MazeSolver mazeSolver;
char maze[51][51] = { }; // Not bothering to show code for populating the array
mazeSolver.setMaze(maze);
}
//MazeSolver.cpp
#include "MazeSolver.h"
MazeSolver::MazeSolver() { }
void MazeSolver::setMaze(char maze[51][51])
{
this->maze = maze;
}
//MazeSolver.h
#ifndef _MAZESOLVER_H
#define _MAZESOLVER_H
class MazeSolver
{
private:
char **maze; // This is likely the problem, I'm at wits end in regards to
// what notation is needed here. I do not want to hard-copy
// the entire array, I just need to access it (via pointer)
// I've also tried just using char maze[51][51] here, char *maze, etc...
public:
MazeSolver();
void setMaze(char maze[51][51]);
}
【问题讨论】:
-
错误的指针类型。
Type **在寻址方面不等同于Type [N][M]。Type (*)[M]会更好,在你的情况下char (*maze)[51];。也就是说,它(维度)作为模板参数可能会更稳健,但这可能是您研究的一个方法。您是要复制输入时的迷宫,还是只是指向/引用原始迷宫? -
@David:你的代码有什么问题?是编译失败,还是有意外的运行时行为?
-
只是对原始迷宫的引用,以便我可以访问这些值。真的不需要完整的硬拷贝,我只需要一种访问所述数组内容的方法。 @WhozCraig 我刚刚尝试了您的修复,现在似乎正在编译,我想我应该从这里开始。感谢您的帮助!
-
SSCCE +1(尽管文件可能已合并)
-
在 C++11 中以更直观的语法使用
std::array<std::array<char, 51>, 51> maze。