// @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;
}