首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++:深度复制基类指针

C++:深度复制基类指针
EN

Stack Overflow用户
提问于 2012-09-04 08:55:00
回答 1查看 14.4K关注 0票数 26

我四处寻找,似乎为了实现这一点,我需要更改我的基类,并想知道这是不是最好的方法。例如,我有一个基类:

class Base {}

然后是一长串派生类:

class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}

然后我还有另一个类:

class DeepCopy 
{ 
  Base * basePtr;

  public:
   DeepCopy(DeepCopy & dc) {}
}

假设基类和Derived_x类的复制构造函数编码正确,那么为DeepCopy编写复制构造函数的最佳方式是什么?我们如何知道我们要复制的对象的basePtr中的类?

我能想到的唯一方法就是使用RTTI,但是使用一长串dynamic_casts似乎是不正确的。此外,它还要求DeepCopy了解基类的继承层次结构。

我看到的另一种方法是here。但它要求基类和派生类实现一个clone方法。

那么,有没有一种更简单、更标准的方法来做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2012-09-04 09:00:45

我认为在这种情况下,模板是最好的方法:

template<typename Sub>
class DeepCopy
{
    Base *base;

    DeepCopy(Sub *sub)
    {
        base = new Sub(*sub); // use copy constructor
    }
}

这确实意味着DeepCopy之间是不可分配的,但这是你用C++付出的代价。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12255546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档