如何将结构传递给函数调用

时间:2013-03-25 04:50:28

标签: c++ function struct

我试图将一个名为“coordinate”的结构传递给一个有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)

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

1 个答案:

答案 0 :(得分:3)

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

IsInMaze(int, int)IsInMaze(coordinate)不同。要正确调用您声明的函数,您必须先创建coordinate,然后传递:

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

或者,您可以声明另一个IsInMaze,其中包含两个int个参数:

bool IsInMaze(int row, int col);