center_pt = *new Point(x/size, y/size);
Утечка памяти. Никто в «си с крестами» за вас не будет подчищать все эти new.
Правильно:
center_pt = Point(x/size, y/size);
(Ну и, разумеется, я не понимаю, что значат эти x/size и y/size, но шут с ним.)
Примерно таким образом и происходит переприсваивание объектов, если им оставили таки операцию =. То есть…
class Geolocator {
public:
  Point coords;
  bool isReliable;
  Geolocator() : coords(0,0), isReliable(false) {}
  void getFromSensor() {
    coords = Point(100, 100);
    isReliable = true;
  }
};
Вариант 2. Через указатель, создание и уничтожение. Для простоты не буду это делать «руками», а воспользуюсь указателем единоличного владения unique_ptr.
class Geolocator {
public:
  std::unique_ptr<Point> coords;
  void getFromSensor() {
    Point pt(100, 100);
    if (coords) {
      *coords = pt;
    } else {
      coords.reset(new Point(pt));
    }
    // а если и операции = у Point нет, то можно
    // coords.reset(new Point(100, 100));
  }
  void declareUnreliable() {
    coords.reset();
  }
};