0

我正在尝试将名为“坐标”的结构传递给具有 2 个 int 的函数,因此当调用该函数时,可以输入整数作为函数的参数。例子:

这是我要使用的结构:

struct coordinate
{
    int row;
    int col;
};

函数原型如下所示:

bool    IsInMaze(coordinate);

我想要做的是调用这样的函数......

IsInMaze(1,5);

这样 1 将成为行,5 将成为列。该功能基本上是检查坐标(int)是否在特定尺寸的大小范围内......像这样

bool MazeClass::IsInMaze(coordinate location)
{
    if(location.row < 0 || location.row > height || location.col < 0 || location.col > width)
        return false;
    else 
        return true;
}

但我得到这个错误......

ola4A1.cc: In function \u2018int main(int, char**)\u2019:
ola4A1.cc:30: error: no matching function for call to \u2018MazeClass::IsInMaze(int, int)\u2019
MazeClass.h:30: note: candidates are: bool MazeClass::IsInMaze(coordinate)
ola4A1.cc:35: error: no matching function for call to \u2018MazeClass::IsInMaze(int, int)\u2019
MazeClass.h:30: note: candidates are: bool MazeClass::IsInMaze(coordinate)

我从来没有真正被教导过,所以我认为我只是不理解这一点。我怎样才能编写这个函数,我可以按照我想要的方式调用它?谢谢。

4

1 回答 1

3

你出错的地方是期望你的结构的内容可以作为参数传递给一个需要你的结构实例的函数。

IsInMaze(int, int)不一样IsInMaze(coordinate)。要正确调用声明的函数,您必须创建coordinate第一个,并传递它:

coorindate c;
c.row = 1;
c.col = 5;
IsInMaze(c);

或者,您可以声明另一个IsInMaze带有两个int参数的:

bool IsInMaze(int row, int col);
于 2013-03-25T04:57:10.490 回答