#pragma once

#include <iomanip>

class Shape
{
public:
virtual void Printfig(std::ostream& os)=0;

virtual int getX() const=0;
virtual int getY() const=0;

virtual void setX(int _X)=0;
virtual void setY(int _Y)=0;

virtual void move(int dx,int dy)=0;

virtual void Draw(CDC* pDC, Shape* figure=0)=0;

virtual CRect GetBoundRect()=0;

virtual void writeAr(CArchive& ar)=0;
virtual void readAr(CArchive& ar)=0;

virtual int getNumType()=0;
virtual CString getName()=0;
virtual ~Shape(){}
private:
friend 	std::ostream& operator<<(std::ostream& os,Shape* ob)
{ob->Printfig(os);
 return os;}

friend
CArchive& AFXAPI operator<<(CArchive& ar,Shape* ob)
{
   ob->writeAr(ar);
   return ar;
}

friend
CArchive& AFXAPI operator>>(CArchive& ar,Shape* ob)
{
   ob->readAr(ar);
   return ar;
}

};

Соседние файлы в папке part32