// @topic T071150 vector of shapes
// @brief std::unique_ptr, std::vector

#include "shapes.h"

using namespace std;

Shape* create_shape(char shape_type)
{
    switch ( shape_type ) {
    case 'L': return new Line;
    case 'R': return new Rectangle;
    case 'C': return new Circle;
    }
    return nullptr;
}

int main()
{
    vector< unique_ptr< Shape > > shapes;

    shapes.push_back( unique_ptr<Shape>( create_shape( 'L' ) ) );
    shapes.push_back( unique_ptr<Shape>( create_shape( 'R' ) ) );
    shapes.push_back( unique_ptr<Shape>( create_shape( 'C' ) ) );

    for ( unique_ptr< Shape > const& shape : shapes ) {
        shape->draw();
    }

    system("pause");
    return 0;
}