Ммм, немного смущения:
компилятор показывает во время выполнения: переменная 'Obj' используется без инициализации
Это то, что вы бы назвали время компиляции . Просто выпрямляю жаргон.
Кроме того, самый простой способ будет
Rectangle Obj;
Obj.Set(3,5);
, что достаточно для большинства сценариев, кроме динамического выделения или полиморфных контейнеров:
std::vector<Shape*> v;
v.push_back(new Rectange());
v.back()->Set(3,5);
v.push_back(new Circle());
v.back()->Set(3,5);
//
Хотя всякий раз, когда вы используете new
, вы должны помнить и о delete
. Это может быть настоящим кошмаром (в свете исключений тоже). Я предлагаю:
std::vector<std::shared_ptr<Shape*> > v;
v.push_back(std::make_shared<Rectange>());
v.back()->Set(3,5);
v.push_back(std::make_shared<Circle>());
v.back()->Set(3,5);