У меня есть класс Point (с целочисленными членами x и y), который имеет функцию-член withinBounds
, которая объявлена так:
bool withinBounds(const Point&, const Point&) const;
и определено так:
bool Point::withinBounds(const Point& TL, const Point& BR) const
{
if(x < TL.getX()) return false;
if(x > BR.getX()) return false;
if(y < TL.getY()) return false;
if(y > BR.getY()) return false;
// Success
return true;
}
и затем в другом файле я вызываю withinBounds
так:
Point pos = currentPlayer->getPosition();
if(pos.withinBounds(topleft, bottomright))
{
// code block
}
Это хорошо компилируется, но не может связать. G ++ дает мне эту ошибку:
/home/max/Desktop/Development/YARL/yarl/src/GameData.cpp:61: undefined reference to 'yarl::utility::Point::withinBounds(yarl::utility::Point const&, yarl::utility::Point const&)'
Когда я делаю функцию не константной, она прекрасно связывается. Кто-нибудь знает причину почему? Ошибка компоновщика выглядит так, будто он ищет неконстантную версию функции, но я не знаю, почему это так.