```
   #include <iostream>
using namespace std;
class Shape
{
  public:
  virtual void draw()=0;
};
class Circle:public Shape
{
  public: 
   void draw(){cout<<"circle "<<endl;}
};
class Rectangle:public Shape
{
  public: 
  void draw(){cout<<"Rectangle "<<endl;}
};

```

I want to Create a Picture class where i can draw diffrent shapes. I am passing Shape class pointer (Abstract) in Picture class Constructor like that:

```
class Picture
{
  public: 
      Shape* s1;
      Picture(Shape *fp): s1(new Shape){}
      void PictureDrawn()
      {
          s1->draw();
      }
};

int main()
{
  Circle cir;  
  Picture pic(cir); 
  pic.PictureDrawn();

```

}

I am getting compilation error . Please can any one explain how to write the Picture class constructor correctly so I can make different shapes ?? Thanks