class LFRPoint { private: /* data */ public: double x, y; LFRPoint(/* args */); LFRPoint(double x, double y); ~LFRPoint(); LFRPoint operator-(const LFRPoint& pt){return LFRPoint(x-pt.x, y-pt.y);} LFRPoint operator+(const LFRPoint& pt){return LFRPoint(x+pt.x, y+pt.y);} }; class LFRVector : public LFRPoint { private: /* data */ public: LFRVector(/* args */); LFRVector(double x, double y); LFRVector(const LFRPoint& pt); ~LFRVector(); }; class LFRLine { private: /* data */ public: LFRPoint start; LFRVector dir; LFRLine(/* args */); LFRLine(LFRPoint start, LFRVector dir); LFRLine(LFRPoint start, LFRPoint end); ~LFRLine(); };