我试图将一个名为“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)
我从未真正接受过这样的教育,所以我认为我只是不理解这一点。我怎样才能编写这个函数,我可以按照我想要的方式调用它?感谢。
答案 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);