2

私はヘビとはしごのゲームを書いており、draw_snake という関数を次のように定義しました。

void draw_snake(const Cairo::RefPtr<Cairo::Context>& cr, 
                std::pair<int,int> snake, 
                std::vector< std::pair<int,int> > boardcoords);

この関数を呼び出すときは、次のようにします。

pair<int, int> snake = make_pair(100,1);
draw_snake(cr, snake, boardcoords);

boardcoordsのベクトルですpair<int,int>。エラー メッセージは、関数を呼び出すときに 4 番目のパラメーターがあることを示しています。エラーメッセージは次のとおりです。

myarea.cc:(.text+0x7db): undefined reference to `MyArea::draw_snake(Cairo::RefPtr<Cairo::Context> const&, std::pair<int, int>, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >)'

このアロケーターはどこから取得していますか?

4

1 に答える 1

3

エラーを読み違えています。この関数には 3 つのパラメーターがあります。

undefined reference to `MyArea::draw_snake(
         Cairo::RefPtr<Cairo::Context> const&,
         std::pair<int, int>,
         std::vector<std::pair<int, int>, std::allocator<std::pair<int, int> > >
//                  ^ The vector's parameters are contained in these brackets  ^
         )

std::vectorデフォルトの「アロケータ」パラメータがあります。指定しなくても存在します。

したがって、エラーは、宣言した正確な関数が定義されていないということです。

于 2013-04-20T01:02:19.727 に答える