У меня есть шаблон класса Matrix, и я хочу создать для него контейнер без stl, но у меня проблема с добавлением матриц в контейнер (те же матрицы !!!).Я создаю временный контейнер, который получает все данные, а затем удаляю все мои данные из контейнера.Я создаю новое пространство для +1 Matrix в контейнере, а затем пытаюсь поместить все в мой новый контейнер:
template<int row, int col, typename T=int>
class MatrixContainer {
public:
MatrixContainer<row, col, T>() {
size = 0;
container = new Matrix<row,col,T>[size];
}
void addMatrix(const Matrix<row, col, T> &mat) {
this->size=this->size+1;
Matrix<row,col,T> *temp = new Matrix<row,col,T>[this->size-1];
for (int i = 0; i < size-1; ++i) {
temp[i] = this->container[i];
}
delete[] this->container;
this->container = new Matrix<row,col,T>[size];
for (int i = 0; i < size-1; ++i) {
this->container[i] = temp[i];
}
container[size]=mat;
delete[]temp;
}
private:
Matrix<row, col, T> *container;
int size;
};
Все компилируется, но когда он видит
container[size]=mat;
, он вызывает конструктор копированияа потом терпит неудачу.Это конструктор копирования в шаблонном классе Matrix:
Matrix(const Matrix &other) {
this->elements = new T *[other.rows];
for (int i = 0; i < other.rows; i++) {
this->elements[i] = new T[other.cols];
}
this->rows = other.rows;
this->cols = other.cols;
for (int i = 0; i < this->rows; ++i) {
for (int j = 0; j < this->cols; ++j) {
this->elements[i][j] = other.elements[i][j];
}
}
}
Я уже все перепробовал, но каждый раз, когда он получает эту строку, он терпит неудачу