C ++如何复制对象的多态数组

时间:2018-05-10 19:42:12

标签: c++ oop polymorphism

我希望我能很好地表达自己,让我解释一下。

我的hirarchey:

   Shape
Circle  Quad
        Square

另一个类allShapes,其中包含一个指向Shapes的动态指针数组。 (形状**)及其大小。

我正在尝试实现+运算符,它假设创建一个新的allShapes对象,方法是从存储在启动了两个对象的两个对象中的元素创建一个新的Shape **数组。运营商。这是功能:

allShapes allShapes::operator+(const allShapes & other) const
{
    allShapes newAllShapes;
    newAllShapes._arr = new Shape *[_size + other._size];
    newAllShapes._size = _size + other._size;
    int i;
    for (i = 0; i < _size; i++)
        newAllShapes._arr[i] = _arr[i];
    for (int j = 0; j < other._size; j++, i++)
        newAllShapes._arr[i] = other._arr[j];
    return newAllShapes;
}

我最初尝试过这个,但这导致我的析构函数出错,因为我只复制地址,我猜它试图删除同一个对象两次..

我尝试使用Shape CConstructor,用以下代码替换行:

newAllShapes._arr[i] = new Shape(*_arr[i]);

我的CConstructor:

Shape::Shape(const Shape & other)
{
    _totalNumOfShapes++;
    _shapeName = other._shapeName;
    _centerPoint = other._centerPoint;
}

但是会导致错误

“不允许抽象类的对象”。

我该如何解决这个问题?希望我包括所需的一切。

0 个答案:

没有答案