Выражения аргументов по умолчанию для функции-члена могут зависеть только от того, что находится в классе или в глобальной области видимости. Аргумент по умолчанию также должен быть указан в объявлении метода (то есть в заголовочном файле).
Чтобы обойти это, вам нужно 2 перегрузки метода MoveTo. Один принимает 1 аргумент, а другой - 2 аргумента. Метод, принимающий 1 аргумент, вызывает другой метод, передавая значение, которое вы считаете значением по умолчанию.
void Object::MoveTo(double speed)
{
MoveTo(speed, initPos);
}
void Object::MoveTo(double speed, Point position)
{
// Everything is done here.
}
Обратите внимание, что когда вы делаете MoveTo(double)
вызов MoveTo(double, Point)
, это позволяет вам написать реализацию MoveTo
только один раз, тем самым соблюдая принцип DRY .