// @topic T071155 vector of shapes
// @brief class inheritance and virtual functions
#ifndef SHAPES_H_INCLUDED_
#define SHAPES_H_INCLUDED_
#include <iostream>
#include <cstdio>
#include <vector>
#include <string>
#include <memory> // for unique_ptr
class Shape {
public:
virtual ~Shape() {} // virtual destructor
virtual void draw() const = 0; // pure virtual function
};//class Shape
class Line : public Shape {
public:
void draw() const {
std::cout << "Line " << this << "\n";
}
};//class Line
class Rectangle : public Shape {
public:
void draw() const {
std::cout << "Rectangle " << this << "\n";
}
};//class Rectangle
class Circle : public Shape {
public:
void draw() const {
std::cout << "Circle " << this << "\n";
}
};//class Circle
#endif //SHAPES_H_INCLUDED_