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