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>。错误消息是说我在调用函数时有第四个参数。错误信息是这样的:

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

你误读了错误。该函数具有三个参数。

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 回答