@David Doria: Да, за исключением того, что сниппет пропускает память долго

го боролся с подобной проблемой, поэтому решил спросить здесь.

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_casts в серии операторов if для проверки каждого возможного производного типа и затем использованияnew оператор. Есть ли другой, лучший подход?

П.С .: Я знаю, что этой проблемы можно избежать, используя умные указатели, но мне интересен минималистический подход, без множества библиотек.

Ответы на вопрос(2)

Ваш ответ на вопрос