相关疑难解决方法(0)

如何从指向多态基类的指针复制/创建派生类实例?

我很长一段时间一直在努力解决这类问题,所以我决定在这里问一下.

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);
Run Code Online (Sandbox Code Playgroud)

该方法应返回动态创建的副本,或者至少将对象存储在某些数据结构中的堆栈上以避免"返回临时地址"问题.

实现上述方法的天真方法是在一系列if语句中使用多个typeids或dynamic_casts来检查每个可能的派生类型,然后使用new运算符.还有其他更好的方法吗?

PS:我知道,使用智能指针可以避免这个问题,但我对简约方法感兴趣,没有一堆库.

c++ polymorphism copy class instance

26
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

class ×1

copy ×1

instance ×1

polymorphism ×1