You're misreading the error. The function has three parameters.
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
has a default "allocator" parameter. It exists even when you don't specify it.
So the error you're getting is that the exact function you declared is not defined.