class EventListener {
public:
virtual ~EventListener() {}
virtual void refresh() = 0;
};
class EventEmitter {
public:
virtual ~EventEmitter() {}
virtual void subscribe(EventListener*) = 0;
};
class TickGen : public EventEmitter
{
public:
virtual void start() = 0;
};
class GPSLocator : public EventEmitter, public EventListener
{
public:
virtual int get_pos_x() = 0;
virtual int get_pos_y() = 0;
};
class NavDisplay : public EventListener
{