我希望我能很好地表达自己,让我解释一下。
我的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;
}
但是会导致错误
“不允许抽象类的对象”。
我该如何解决这个问题?希望我包括所需的一切。