双指针对象数组-克隆元素

亚历克斯·R。

我试图摆脱继承和深度复制的束缚,但遇到了一些麻烦。我有3个类(1个基数和2个派生),如下所示:

class Base {
protected:
    int id;
public:
    Base(int i) : id(i) {};
    virtual ~Base();
};

class DeriveA : public Base {
    int specialID;
public:
    DeriveA(int s, int i) : Base(i), specialID(s) {};
    ~DeriveA();
};

class DeriveB : public Base {
    int specialID;
public:
    DeriveB(int s, int i) : Base(i), specialID(s) {};
    ~DeriveB();
};

在我的主要我有这样的事情:

int main() {

    Base **Array;
    int i, n;
    Array = new Base*[5];
    for (i = 0 ; i < 5 ; i++) {
        n = rand() % 2;
        if (n)
            Array[i] = new DeriveA(i, n);
        else
            Array[i] = new DeriveB(i, n);
    }
}

如果满足特定情况,我想将数组对象硬拷贝到其他对象上。我发现很难为其创建副本构造函数,因为它对Array[0] = Array[2];我不起作用。我不想使用任何向量或std :: copy,因为那不是我的“教育”目标。

PS 1:因为我已经初始化了数组的所有对象,所以赋值运算符更好地用于此目的。

PS 2:由于这是通用代码,因此我遗漏了一些错误。请忽略它们,并专注于问题。

莫尔布德尼洛

如果要克隆对象,而不是将指针复制到同一对象,则可以使用虚拟克隆功能:

class Base {
public:
    virtual Base* clone() const = 0;
    virtual ~Base();  // Don't forget 'virtual' here
};

class DeriveA : public Base {
public:
    virtual Base* clone() const { return new DeriveA(*this); }
};

class DeriveB : public Base {
public:
    virtual Base* clone() const { return new DeriveB(*this); }
};


// ...

Array[0] = Array[2]->clone();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将元素的NamedNodeMap克隆到空对象?

来自分类Dev

XSLT-克隆XML过滤掉数组元素

来自分类Dev

使用双指针访问2D数组元素

来自分类Dev

QT中数组指针对象的指针

来自分类Dev

C ++-创建指向包含类对象指针的数组元素的指针

来自分类Dev

Node.js和lodash-克隆JSON对象仅返回特定元素

来自分类Dev

仅将我要添加的最终数组列表克隆到2维ArrayList的所有元素。

来自分类Dev

使用指针对二维数组中的一行中的元素进行排序

来自分类Dev

在angularjs中克隆元素

来自分类Dev

删除最后克隆的元素

来自分类Dev

如何删除克隆的元素

来自分类Dev

jQuery克隆元素

来自分类Dev

克隆元素上的事件?

来自分类Dev

jQuery克隆父元素

来自分类Dev

未显示克隆的元素

来自分类Dev

克隆所选元素

来自分类Dev

在指向对象的指针的动态数组上插入新元素

来自分类Dev

无法深度克隆数组对象

来自分类Dev

指针数组,更改指针元素

来自分类Dev

替换指针数组的元素

来自分类Dev

替换指针数组的元素

来自分类Dev

在双指针的帮助下指向第一个数组元素不起作用

来自分类Dev

如何克隆函数指针

来自分类Dev

没有孩子的克隆元素

来自分类Dev

克隆元素发现者

来自分类Dev

应用了Fineuploader的克隆元素

来自分类Dev

克隆div并替换子元素

来自分类Dev

克隆并还原“工具提示”元素

来自分类Dev

克隆元素并追加和删除?