Я долгое время боролся с такой проблемой, поэтому я решил спросить здесь.
class Base {
virtual ~Base();
};
class Derived1 : public Base { ... };
class Derived2 : public Base { ... };
...
// Copies the instance of derived class pointed by the *base pointer
Base* CreateCopy(Base* base);
Метод должен возвращать динамически создаваемую копию или, по крайней мере, хранить объект в стеке в какой-либо структуре данных, чтобы избежать проблемы с возвратом временного файла.
Наивный подход к реализации вышеупомянутого метода будет заключаться в использовании нескольких typeid
или dynamic_cast
в серии if-операторов для проверки каждого возможного производного типа, а затем использования оператора new
.
Есть ли другой подход?
P.S.: Я знаю, что этой проблемы можно избежать с помощью интеллектуальных указателей, но меня интересует минималистический подход, без кучи библиотек.