0

「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)

私はこれを実際に教えられたことがないので、私はこの権利を理解していないだけだと思います。呼び出したい方法で呼び出すことができるこの関数をどのように記述できますか?ありがとう。

4

1 に答える 1

3

間違っているのは、構造体のコンテンツが、構造体のインスタンスを期待する関数への引数として渡される可能性があることです。

IsInMaze(int, int)と同じではありませんIsInMaze(coordinate)。宣言されたとおりに関数を適切に呼び出すには、coordinate最初に関数を作成し、それを渡す必要があります。

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

IsInMazeまたは、 2つのパラメーターを受け取る別のパラメーターを宣言することもできintます。

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